Winapi 使用Win32事件对象

Winapi 使用Win32事件对象,winapi,createthread,Winapi,Createthread,问题: 此链接显示CreateEvent和CreateThread的示例 我的问题是ThreadProc是否真的是线程安全的 具体来说,是dwWaitResult变量。由于所有线程都在等待同一个事件,因此,如果创建了不同的事件,则该代码可以工作,例如,这将无法正常工作?事件是按名称创建的,因此,如果已创建事件,则会在任何其他线程中重新使用该代码,以“创建”具有相同名称的事件。因此,示例代码是线程安全的。dwWaitResult变量是该函数中的局部变量。因此,每个线程都有自己的副本,从而确保变量

问题:

此链接显示CreateEvent和CreateThread的示例

我的问题是ThreadProc是否真的是线程安全的


具体来说,是dwWaitResult变量。由于所有线程都在等待同一个事件,因此,如果创建了不同的事件,则该代码可以工作,例如,这将无法正常工作?

事件是按名称创建的,因此,如果已创建事件,则会在任何其他线程中重新使用该代码,以“创建”具有相同名称的事件。因此,示例代码是线程安全的。
dwWaitResult
变量是该函数中的局部变量。因此,每个线程都有自己的副本,从而确保变量是线程安全的。每个线程都有自己的堆栈,因此所有局部变量都是特定于单个线程的。

“因此所有局部变量都是特定于单个线程的。”是否因为该变量是局部和非静态的,所以每个调用方(线程)都有一个单独的变量dwWaitResult实例化?@Eric M,是的。如果变量在函数中被标记为static,那么它将在所有实例之间共享。