C++ MultiThread

C++ 实现多线程

#include <thread>
#include <mutex>
#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>

std::mutex my_lock;
void add(int &num, int &sum){
    while(true){
        std::lock_guard<std::mutex> lock(my_lock); 
        if (num < 100){ //运行条件
            num += 1;
            sum += num;
        } 
        else {  //退出条件
            break;
        } 
    } 
}
int multiThread(){
    int sum = 0;
    int num = 0;
    std::vector<std::thread> ver;  //保存线程的vector
    for(int i = 0; i < 20; ++i){
        std::thread t = std::thread(add, std::ref(num), std::ref(sum));
        /*emplace_back()函数向容器中中加入临时对象, 临时对象原地构造,没有赋值或移动的操作。*/
        ver.emplace_back(std::move(t)); //保存线程
    } 
    /*mem_fn()把可以从成员指针生成一个可调用对象*/
    std::for_each(ver.begin(), ver.end(), std::mem_fn(&std::thread::join)); //join
    std::cout << sum << std::endl;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容