c/c++:使用std的多线程

File : thread.cpp (直接右键另存为下载)
Type : c++
Brief : 使用std的多线程类



#include <iostream>
//#include <conio.h>
#include <thread>
#include <mutex>
#include <cstdio>

int				g_cnt = 0;
std::mutex		g_mtx;					// 互斥量

void tfunc(int k)
{
    std::this_thread::sleep_for(std::chrono::milliseconds(10));

    g_mtx.lock();
    g_cnt++;
    std::cout << "k: " << k << "\t\tg_cnt: " << g_cnt << std::endl;
    g_mtx.unlock();
}

int main()
{
    std::thread* thrd_child[10];

    for (int k = 0; k < 10; k++)
        thrd_child[k] = new std::thread(tfunc, k);    // 按值传递参数k

    for (int k = 0; k < 10; k++)
    {
        // 阻塞当前线程,直至 *this 所标识的线程完成其执行;
        // 即10个线程执行完毕,main所在主线程才会结束。
        thrd_child[k]->join();

        // 从 thread 对象分离执行的线程,允许执行独立地执行;
        // 即10个线程还没执行完毕,main所在线程可能已经退出了;
        // 所以可以看不到tfunc的输出内容
        //thrd_child[k]->detach();
    }

    //for (int k = 0; k < 10; k++)
    //    delete thrd_child[k];

    return 0;
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]

文章标题:c/c++:使用std的多线程

本文作者:Y

发布时间:2018-01-25, 10:26:09

最后更新:2019-08-15, 16:53:54

原始链接:http://yehuohan.github.io/2018/01/25/Gist/c&c++/c-%E4%BD%BF%E7%94%A8std%E7%9A%84%E5%A4%9A%E7%BA%BF%E7%A8%8B/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。