确保线程已启动WinAPI C ++

爆米花

我正在使用c ++中的winapi创建一个程序。该程序涉及两个线程。我使用CreateThread创建线程之一。问题在于,CreateThread在创建线程之前不会阻塞。这会导致问题,因为我正在线程之间发送消息,并且在创建线程之前,该线程将不会收到任何消息。如何解决这个问题。

数据狼

使用CreateEvent来创建你让等待线程A.你线程B做的第一件事是信令事件的事件句柄。

struct thread_data {
    /* ... */
    HANDLE started_event;
};

线程A:

/* We can create this on the stack. We wait for thread_B to
 * copy it into its own stack before signalling the event. */
struct thread_data td;

td.started_event = CreateEvent(
    NULL  /* security attributes */,
    FALSE /* manual reset (=NO) */,
    FALSE /* initially signalled (=NO) */,
    NULL  /* name (=none) */ );

CreateThread(NULL, 0, thread_B, &td, 0, NULL);
WaitForSingleObject(td.started_event, INFINITE);
CloseHandle(td.started_event);

线程B:

DWORD WINAPI thread_B(LPVOID data)
{
    /* local copy of thread data */
    thread_data td = *((thread_data*)data);
    SetEvent(td.started_event);

    /* ... */
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确保线程已启动WinAPI C ++

来自分类Dev

C ++ \ CLI线程启动

来自分类Dev

WinApi C多线程:如何等待线程完成?

来自分类Dev

C pthreads:从main启动线程

来自分类Dev

C ++多线程延迟启动

来自分类Dev

C pthreads:从main启动线程

来自分类Dev

如何将“ this”指针传递给C ++ WinAPI线程?

来自分类Dev

C++11:确保从主线程进行 GUI 调用

来自分类Dev

C#中的多线程无法启动

来自分类Dev

如何在C ++中启动多个线程

来自分类Dev

确保两个线程同时启动

来自分类Dev

C ++ 11线程-从类内部启动无限工作线程

来自分类Dev

C ++ 11线程-从类内部启动无限工作线程

来自分类Dev

如何在程序启动时启动C ++线程?

来自分类Dev

如何在程序启动时启动C ++线程?

来自分类Dev

Xcode 7:C ++线程错误:尝试使用已删除的功能

来自分类Dev

尝试对C ++ 11线程使用已删除的函数

来自分类Dev

C ++线程和承诺:尝试引用已删除的函数

来自分类Dev

C-WinAPI-将消息发送到线程并等待它

来自分类Dev

如何使用c#中的winapi32函数在线程之间发送消息?

来自分类Dev

java.lang.IllegalThreadStateException:线程已启动

来自分类Dev

在C ++ std :: vector之外的线程中启动可运行对象

来自分类Dev

在一次调用C ++ 11中启动多个线程

来自分类Dev

C#OpenFileDialog线程启动,但未显示对话框

来自分类Dev

在C ++中启动函数对象线程的正确方法?

来自分类Dev

C#:如何在特定时间启动线程

来自分类Dev

C# 使用不同的参数重新启动线程

来自分类Dev

C#线程启动顺序不一致

来自分类Dev

在 C++11 中通过构造函数启动线程