gpt4 book ai didi

c++ - 线程设计和设计以及在 C++ Win32 中从另一个线程中调用一个函数

转载 作者:行者123 更新时间:2023-11-28 06:58:33 25 4
gpt4 key购买 nike

假设您在 Win32 中有两个线程。假设主 UI 线程启动工作线程 A。假设当创建线程 A 时,指向主线程中某个类的指针被发送到线程 A。在处理过程中的某个时刻,线程 A 调用主线程中的函数通过指针线程。线程A和主线程永远不会争用同一个数据,也不会同时调用同一个函数。

这是不好的做法吗?

如果是,那么该功能的正确设计是什么。线程 A 需要访问主线程中的函数,比如访问保存在主线程中的数据。可以预期,当主线程访问数据时,线程 A 永远不会调用主线程中的函数。这样就不会有数据争用。但是,当线程a还在调用主线程中的函数时,主线程可能会再次启动。

只要不存在数据争用并且被调用的函数是可重入的,这是否重要或者通常可以在其他线程中调用函数?

最佳答案

线程在进程中是全局的,在所有线程之间共享。没有“主线程中的函数”之类的东西。

重要的是如何共享数据。函数由两部分组成:代码本身和它所操作的数据。

一般来说,代码是静态的。这就是代码在线程之间自由共享的原因。从来没有任何争论。

不过,对于数据来说,情况就不同了。您需要确保在多个线程之间共享的任何数据上没有不正确的争用。只要您对此感到满意,那么从多个线程调用同一个函数就可以了。

关于c++ - 线程设计和设计以及在 C++ Win32 中从另一个线程中调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22854557/

25 4 0
文章推荐: html - 样式元素未显示