相关疑难解决方法(0)

std :: mutex会创建一个围栏​​吗?

如果我锁定std::mutex遗嘱,我总会得到一个记忆围栏?我不确定它是暗示还是强迫你获得围栏.

更新:

根据RMF的评论发现此参考文献.

多线程编程和内存可见性

c++ multithreading mutex memory-model memory-barriers

29
推荐指数
2
解决办法
3717
查看次数

这个多线程C++代码需要'volatile'吗?

我用C++编写了一个Windows程序,它有时使用两个线程:一个后台线程用于执行耗时的工作; 和另一个用于管理图形界面的线程.这样,程序仍然响应用户,这需要能够中止某个操作.线程通过共享bool变量进行通信,该变量设置为true当GUI线程通知工作线程中止时.这是实现此行为的代码(我已经删除了不相关的部分):

GUI线程执行的代码


class ProgressBarDialog : protected Dialog {

    /**
     * This points to the variable which the worker thread reads to check if it
     * should abort or not.
     */
    bool volatile* threadParameterAbort_;

    ...

    BOOL CALLBACK ProgressBarDialog::DialogProc( HWND dialog, UINT message, 
        WPARAM wParam, LPARAM lParam ) {

        switch( message ) {
            case WM_COMMAND :
                switch ( LOWORD( wParam ) ) {

                    ...

                    case IDCANCEL :
                    case IDC_BUTTON_CANCEL :
                        switch ( progressMode_ ) {
                            if ( …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading volatile

11
推荐指数
2
解决办法
3063
查看次数