c++ - 线程与事件同步

标签 c++ multithreading visual-studio

这里是嵌入式系统的新手。我必须使两个线程与事件同步。我的代码只显示 "Show in edit box 2sec" 并且不会在 secondthread 中显示我在那里的内容。我应该在编辑框中显示 2 秒,一个线程显示一条消息,两秒后我应该显示 3 秒另一条消息。这应该永远重复。

void FirstThread(void)
{

    int i;
    //write data to edit box
    CString szEdit;
    szEdit.Format(_T("Show in edit box 2sec"));
    m_editbox->SetWindowText(szEdit);


    while(1){

        WaitForSingleObject (hEvent, INFINITE);
        for(i=0;i<1;i++){
            Sleep(2000);
        }
        SetEvent (hEvent);
    }

}

void SecondThread (void)
{
    int i;

    //write data to edit box
    CString szEdit;
    szEdit.Format(_T("Show in edit box 3 sec"));
    m_editbox->SetWindowText(szEdit);

    while(1){
        WaitForSingleObject (hEvent, INFINITE);
        for(i=0;i<1;i++){
            Sleep(3000); 
        }
        SetEvent (hEvent);
    }
}

最佳答案

您应该使用两个不同的事件,一个在第一个线程中表示休眠结束,另一个在第二个线程中表示。 (最初,应设置(发出信号)其中一个事件,另一个 - 未设置。)

关于c++ - 线程与事件同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303250/

相关文章:

c++ - 使用 std::thread (C++ 11) 多线程无法正常工作

c++ - 如何在不违反 const 正确性的情况下使用 std::lock_guard?

c++ - 能否在 MFC 按钮控件上检测到鼠标右键单击事件?

c++ - 如何使托管代码中的 c++ dll 中的其他 dll 可以使用某个方法?

c++ - 简单的 int 到字符串转换... Int 到 const char* 无效

c++ - 多线程内联汇编

visual-studio - 在 VS 中自动更新项目中的所有 Web 引用

c# - VS 2008 中的解决方案文件

c++ - 无法链接CMake中的本地库

c++ - 如何构建一个 Map,其中 Key 是一个抽象基类(不是 Value)