本节内容:

  启动一个线程

  每个程序都至少会有一个线程,main函数是执行入口,我们称之为主线程,其余子线程有各自的入口函数,主线程和子线程同时运行。子线程在std::thread对象创建时启动。

1.无参数无返回值函数做子线程入口:

void func()
{
cout << "func" <<endl;
} std::thread my_job(func);

2.类重载()运算符作为子线程入口:

class thread_test
{
public:
void operator()() const
{
cout << "thread test" <<endl;
}
}; thread_test t;
std::thread my_job(t);

3.使用lamda表达式作为子线程入口:

std::thread my_job([]{
cout << "lamda" <<endl;
});

4.使用普通带参数函数作为子线程入口

void func(int i)
{
cout << "i = " << i << endl;
} int count = ;
std::thread my_job(func, count);

5.类的无参成员函数作为子线程入口

class thread_test
{
public:
void func()
{
cout << "thread_test func" << endl;
}
};
thread_test t;
std::thread my_job(&thread_test::func, &t);

6.类的有参成员函数作为子线程入口

class thread_test
{
public:
void func(int i)
{
cout << "thread_test func i = " << i << endl;
}
};
thread_test t;
int count = ;
std::thread my_job(&thread_test::func, &t, count);

线程join()/detach():

  join()
  线程调用join函数以后,主线程就会等待子线程结束。线程不可以join或者datach多次,joinable()函数返回线程是否可join或detach。
  detach()
  使用detach会让线程在后台运行,这种线程通常被叫做守护线程。

识别一个线程:

  每个线程都有一个唯一的id来标识。可以通过是std::thread对象的get_id()函数来获取,或者在线程中使用std::this_thread::get_id()来获取。

C++11并发编程2------线程管理的更多相关文章

  1. Java并发编程:线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  2. 并发编程 13—— 线程池的使用 之 配置ThreadPoolExecutor 和 饱和策略

    Java并发编程实践 目录 并发编程 01—— ThreadLocal 并发编程 02—— ConcurrentHashMap 并发编程 03—— 阻塞队列和生产者-消费者模式 并发编程 04—— 闭 ...

  3. Java并发编程:线程池的使用(转)

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  4. Java并发编程:线程池的使用(转载)

    转载自:https://www.cnblogs.com/dolphin0520/p/3932921.html Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实 ...

  5. Java并发编程:线程池的使用(转载)

    文章出处:http://www.cnblogs.com/dolphin0520/p/3932921.html Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实 ...

  6. [转]Java并发编程:线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  7. 【转】Java并发编程:线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  8. 13、Java并发编程:线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  9. C++11 并发编程库

    C++11 并发编程 C++11 新标准中引入了几个头文件来支持多线程编程,他们分别是: <atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_f ...

随机推荐

  1. [C++_QT] 代码中不能有中文的解决方案 换行符问题

    #开始 今天开始入坑QT了 似乎是个高大上的东西,师傅一直建议我学这个 (如果用C++做界面的话) 配置好环境之后写了代码运行没问题 但是添加了中文字符之后就 die 了,这个问题的话 LInux上的 ...

  2. JS中的数组创建,初始化

    JS中没有专门的数组类型.但是可以在程序中利用预定义的Array对象及其方法来使用数组. 在JS中有三种创建数组的方法: var arr = new Array(1,2,3,4); var arr = ...

  3. 「ZJOI2008」树的统计

    树剖模板题啊! 这道题的话,最通(jian)俗(dan)易(cu)懂(bao)的解法应该就是树剖了. 加上线段树维护树上路径的最大权值(\(Max\))和路径和(\(sum\)). 至于\(LCT\) ...

  4. Linux - 查看端口占用、开放情况

    1. lsof -i : 2. nmap 127.0.0.1 3. sudo netstat -tunlp (不加sudo看不见PID) 4. gufw 参考 https://askubuntu.co ...

  5. properties配置文件在idea中默认utf-8可能会乱码

    改一个设置就好了

  6. 关于浮动&关于BFC规范&whyoverflow清除浮动

    https://www.cnblogs.com/smivico/p/7656270.html 浮动 https://www.jianshu.com/p/4b93eecb090e BFC https:/ ...

  7. HDU2612 Find a way (跑两遍BFS)

    Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...

  8. Codeforces Round #619 (Div. 2) B. Motarack's Birthday

    Dark is going to attend Motarack's birthday. Dark decided that the gift he is going to give to Motar ...

  9. Android 调用系统Email发送带多附件的邮件

    转自:http://www.open-open.com/lib/view/open1347005126912.html 众所周知,在Android中调用其他程序进行相关处理,都是使用的Intent.当 ...

  10. MyBatis 入门Demo

    新建数据库my_db,新建表student_tb id为主键,不自动递增. 不必插入数据. 下载MyBatis https://github.com/mybatis/mybatis-3/release ...