Windows是线程安全的吗

Windows是线程安全的吗,windows,winapi,Windows,Winapi,我有一个非常基本的问题: EnumWindows是线程安全的吗 谢谢您可以从任何线程安全地调用EnumWindows。通常,Windows API函数是线程安全的。此一般规则的例外情况将在函数的文档中进行签名发布。您可以从任何线程安全地调用EnumWindows。通常,Windows API函数是线程安全的。此一般规则的例外情况将在职能部门的文档中进行签名发布 不在主线程中。这是我的问题 user32.dll中的一些函数是线程敏感的,如果调用(比如)SendMessage()来获取工作线程上的

我有一个非常基本的问题:
EnumWindows
是线程安全的吗


谢谢

您可以从任何线程安全地调用
EnumWindows
。通常,Windows API函数是线程安全的。此一般规则的例外情况将在函数的文档中进行签名发布。

您可以从任何线程安全地调用
EnumWindows
。通常,Windows API函数是线程安全的。此一般规则的例外情况将在职能部门的文档中进行签名发布

不在主线程中。这是我的问题

user32.dll中的一些函数是线程敏感的,如果调用(比如)SendMessage()来获取工作线程上的自定义消息,可能会给自己挖一个相当深的洞。但是没有,EnumWindows()没有这样的问题,它不关心线程是否在泵送消息循环,也不依赖于线程状态。当然,您需要考虑这样一种可能性:您在回调中获得的窗口句柄可能是针对一个仅在几秒钟前被销毁的窗口,EnumWindows()不会冻结创建窗口的每个进程的每个线程

不在主线程中。这是我的问题


user32.dll中的一些函数是线程敏感的,如果调用(比如)SendMessage()来获取工作线程上的自定义消息,可能会给自己挖一个相当深的洞。但是没有,EnumWindows()没有这样的问题,它不关心线程是否在泵送消息循环,也不依赖于线程状态。当然,您需要考虑这样一种可能性,即您在回调中得到的窗口句柄可能是针对一个仅在几秒钟前被销毁的窗口,EnumWindows()不会冻结创建窗口的每个进程的每个线程。

您的意思是什么?如果在枚举时出现新窗口,这[不会]给您带来麻烦吗?我对此表示怀疑,否则就不会有人使用它,因为它应该从其他进程枚举窗口。我只是想知道我是否可以在线程中使用此函数。所有事情都发生在线程中。是的,你可以。如何使用非线程中的函数?你的意思是不在应用程序的主线程中?是的,您可以,因为属于其他进程的窗口不关心您的哪个线程是主线程。是的。不在主线程中。那是我的问题,你什么意思?如果在枚举时出现新窗口,这[不会]给您带来麻烦吗?我对此表示怀疑,否则就不会有人使用它,因为它应该从其他进程枚举窗口。我只是想知道我是否可以在线程中使用此函数。所有事情都发生在线程中。是的,你可以。如何使用非线程中的函数?你的意思是不在应用程序的主线程中?是的,您可以,因为属于其他进程的窗口不关心您的哪个线程是主线程。是的。不在主线程中。这是我的问题。