头文件 <thread>
成员方法:
detach():本线程与调用它的线程分离,各自独立执行。调用之后,线程变为non-joinable
join():本线程执行完该函数才会返回,调用它的线程需要等待返回只会继续往下执行。调用后non-joinable
joinable():A thread object is joinable if it represents a thread of execution.
3种情况是non-joinable:A.默认构造;B.转移过(构造方法或=转移);C.执行过detach或join
get_id():如果线程是joinable的,返回一个唯一的id标识该线程;否则返回一个默认的
问题: thread是什么时候执行赋予它的函数的?
答案:是thread对象创建后就执行,并不是等到detach或join执行之后才运行。
命名空间this_thread的方法
std::this_thread::get_id():返回当前线程的id
std::this_thread::yield():是将当前线程所抢到的CPU”时间片A”让渡给其他线程,等到其他线程使用完”时间片A”后, 再由操作系统调度, 当前线程再和其他线程一起开始抢CPU时间片。yield比较难理解,yield目的是避免一个线程(that should be used in a case where you are in a busy waiting state)频繁与其他线程争抢CPU时间片, 从而导致多线程处理性能下降.
sleep_for(time):当前线程休眠一段时间
sleep_util(time):休眠到某个时间点