C 艹多线程
std::thread管理线程
#include <iostream>
#include <thread>
void function() {
std::cout << "Thread is running." << std::endl;
}
int main() {
std::thread t(function); //创建线程
t.join(); // 等待线程完成
return 0;
}
如果传递参数,就加,
std::thread t(function,"参数");
线程成员函数
std::thread
类型
join()
: 等待线程完成其执行。调用join()
的线程将阻塞,直到与之关联的线程完成其任务。detach()
: 分离线程,允许线程独立执行。一旦线程被分离,它的执行将独立于主线程之外进行。joinable()
: 如果线程可以被join
或detach
,则返回true
。
线程自身函数
std::thread_local::XXXX
get_id()
这个函数返回当前线程的唯一标识符(std::thread::id
类型)这个标识符可以用来比较不同线程是否是同一个线程。sleep_for()
该函数使当前线程暂停执行指定的时间量。这个时间是通过一个std::chrono::duration
类型的值来指定的
void DoWork(){
using namespace std::literals::chrono_literals;//命名空间对应std::chrono::duration对象
while (true){
std::cout << "Working...\n";
std::this_thread::sleep_for(1s);//1s就是std::chrono::seconds(1)
}
}
sleep_until()
此函数使当前线程暂停执行,直到到达指定的时间点。这个时间点是通过一个std::chrono::time_point
类型的值来指定的。
using namespace std::chrono_literals;
auto wakeup_time = std::chrono::system_clock::now() + 1h;
std::this_thread::sleep_until(wakeup_time);
yield()
该函数提醒线程调度器让出当前线程的时间片,允许其他线程运行。yield
可以被用来避免一个线程完全占用 CPU,尤其是在一个紧密循环中。
std::this_thread::yield();
Comments NOTHING