繁体   English   中英

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

[英]Thread design and design and calling a function in one thread from another in C++ Win32

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

这是不好的做法吗?

如果是的话,那么此功能的正确设计将是什么。 线程A需要访问主线程中的函数,例如访问保留在主线程中的数据。 可以预料的是,当主线程访问数据时,线程A永远不会在主线程中调用该函数。 因此,不会有数据争用。 但是,当线程a仍在调用主线程中的函数时,主线程可能会再次启动。

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

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

重要的是如何共享数据。 函数由两部分组成:代码本身以及对其进行操作的数据。

通常,该代码是静态的。 这就是为什么可以在线程之间自由共享代码的原因。 从来没有任何争论。

数据却是另外一回事。 您需要确保在多个线程之间共享的任何数据上都没有不正确的争用。 只要您对此感到满意,那么可以从多个线程中调用相同的函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM