当我有这样的代码块时:

    mutex mtx;

    void hello(){
        mtx.lock();
        for(int i = 0; i < 10; i++){
           cout << "hello";
        }
        mtx.unlock();
    }
    void hi(){
        mtx.lock();
        for(int i = 0; i < 10; i++){
           cout << "hi";
        }
        mtx.unlock();
    }

    int main(){
       thread x(hello);
       thread y(hi);
       x.join();
       y.join();
    }

What is the difference between just calling `hello()` and `hi()`? (Like so)
   ...
   int main(){
      hello();
      hi();
   }


线程效率更高吗?线程的目的是要同时运行,对吗?

有人可以解释为什么我们在线程函数中使用互斥吗?谢谢!

最佳答案

线程的目的是要同时运行,对吗?


是的,线程用于并行执行多个任务,尤其是在不同的CPU上。


  有人可以解释为什么我们在线程函数中使用互斥吗?


要将多个线程彼此序列化,例如当它们正在访问不安全地同时访问且需要受到保护的共享资源时。

关于c++ - 互斥与标准函数调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36024044/

10-09 13:36