C 艹多线程

发布于 2024-06-01  48 次阅读


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(): 如果线程可以被 joindetach,则返回 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();
QQ:2219349024
最后更新于 2024-06-01