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

时间:2014-04-04 05:49:38

标签: c++ multithreading winapi

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

这是不好的做法吗?

如果是,那么这个功能的正确设计是什么。线程A需要访问主线程中的函数,以访问保留在主线程中的数据。虽然线程A在主线程访问数据时永远不会在主线程中调用该函数。因此,不存在对数据的争论。但是,主线程可能会再次启动,而线程a仍在调用主线程中的函数。

只要没有数据争用且被调用的函数是可重入的,那么调用其他线程中的函数是否重要或者通常是否正常?

1 个答案:

答案 0 :(得分:1)

线程在进程中是全局的,在所有线程之间共享。在#34;主线程中没有"一个函数。

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

作为一般规则,代码是静态的。这就是为什么代码可以在线程之间自由共享。从来没有任何争论。

尽管如此,这是一个不同的故事。您需要确保在多个线程之间共享的任何数据上没有不正确的争用。只要你满足于此,那么从多个线程调用相同的函数就可以了。