小编Joe*_*res的帖子

类和互斥体

假设我有一个类代表一些名为 foo 的数据结构:

\n\n
class foo{\n  public:\n    foo(){\n      attr01 = 0;\n    }\n    void f(){\n      attr01 += 5;\n    }\n  private:\n    int attr01;\n};\n\nclass fooSingleThreadUserClass{\n    void usefoo(){\n      fooAttr.f();\n    }\n\n    foo fooAttr;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在假设在软件构建的后期,我发现我需要多线程。我应该在 foo 中添加互斥体吗?

\n\n
class foo{\n  public:\n    foo(){\n      attr01 = 0;\n    }\n    void f(){\n      attr01Mutex.lock();\n      attr01 += 5;\n      attr01Mutex.unlock();\n    }\n  private:\n    int attr01;\n    std::mutex attr01Mutex;\n};\n\nclass fooMultiThreadUserClass{\n    void usefoo(){\n      std::thread t1(&fooMultiThreadUserClass::useFooWorker, this);\n      std::thread t2(&fooMultiThreadUserClass::useFooWorker, this);\n      std::thread t3(&fooMultiThreadUserClass::useFooWorker, this);\n      std::thread t4(&fooMultiThreadUserClass::useFooWorker, this);\n\n      t1.join();\n      t2.join();\n      t3.join();\n      t4.join();\n    }\n\n    void useFooWorker(){\n      fooAttr.f();\n    }\n\n    foo fooAttr;\n}\n …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading mutex c++11

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

c++11 ×1

multithreading ×1

mutex ×1