假设你在Win32中有两个线程。假设主UI线程启动一个工作线程A.假设在创建线程A时,主线程中的一个类的指针被发送到线程A.在它处理的某个时刻,线程A调用一个函数线程通过指针。线程A和主线程永远不会争用相同的数据,也不会同时调用相同的函数。
这是不好的做法吗?
如果是,那么这个功能的正确设计是什么。线程A需要访问主线程中的函数,以访问保留在主线程中的数据。虽然线程A在主线程访问数据时永远不会在主线程中调用该函数。因此,不存在对数据的争论。但是,主线程可能会再次启动,而线程a仍在调用主线程中的函数。
只要没有数据争用且被调用的函数是可重入的,那么调用其他线程中的函数是否重要或者通常是否正常?
答案 0 :(得分:1)
线程在进程中是全局的,在所有线程之间共享。在#34;主线程中没有"一个函数。
重要的是如何共享数据。函数由两部分组成:代码本身及其操作的数据。
作为一般规则,代码是静态的。这就是为什么代码可以在线程之间自由共享。从来没有任何争论。
尽管如此,这是一个不同的故事。您需要确保在多个线程之间共享的任何数据上没有不正确的争用。只要你满足于此,那么从多个线程调用相同的函数就可以了。