当前位置: 代码迷 >> 综合 >> 多线程编程(一)
  详细解决方案

多线程编程(一)

热度:88   发布时间:2024-01-28 19:28:28.0

引用头文件thread

创建线程:thread mythread(多线程函数)

阻塞主线程直到子线程运行完毕:mythread.join() 

分离主线程和子线程,使得主线程和子线程可以同步执行下去(一旦分离后,就无法再使线程join),主线程结束后子线程也结束:mythread.detach()

检查线程是否能join或者detach:mythread.joinable()

 

std::this_thread::get_id():获取当前线程的ID

线程函数的参数有引用时,从主线程中传入参数,并不是正常的引用,而是又复制了一个值供子线程使用。也就是如果传入的是类对象,则类对象会拷贝构造一个对象传入子线程。且线程函数的参数必须为const 类名& 变量名

 

由于线程函数传入的类对象引用不是真正的引用,是传入了拷贝构造的新的对象。所以为了将真正的对象传入非复制,则需要用到:std::ref(),此函数中传入类对象再传入线程函数,即可实现直接传入。这时线程函数的参数不需要再加上const

  相关解决方案