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