C++标准库中提供了一些用于多线程编程的类和函数,主要包括以下几个部分:
#include <thread>
void myFunction() {
// 线程执行的函数
}
int main() {
std::thread t(myFunction);
t.join(); // 等待线程执行完成
return 0;
}
#include <thread>
#include <mutex>
std::mutex mtx;
void myFunction() {
std::lock_guard<std::mutex> lock(mtx);
// 访问共享资源的代码
}
int main() {
std::thread t1(myFunction);
std::thread t2(myFunction);
t1.join();
t2.join();
return 0;
}
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
bool ready = false;
void myFunction() {
std::unique_lock<std::mutex> lock(mtx);
while (!ready) {
cv.wait(lock);
}
// 可以继续执行
}
int main() {
std::thread t(myFunction);
// 唤醒线程
{
std::lock_guard<std::mutex> lock(mtx);
ready = true;
}
cv.notify_one();
t.join();
return 0;
}
除了标准库中提供的类和函数,C++11之后还引入了并行算法库(Parallel Algorithms),可以方便地进行并行计算。这些算法会自动利用多线程来加速计算,无需手动管理线程。
#include <algorithm>
#include <vector>
#include <execution>
int main() {
std::vector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6, 5};
// 使用并行算法对容器进行排序
std::sort(std::execution::par, vec.begin(), vec.end());
return 0;
}
总的来说,C++标准库提供了丰富的多线程编程工具,可以方便地实现并发编程。同时,也可以借助第三方库(如Boost.Thread)来扩展多线程功能。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。