有一个worker包含一个数据数组。
它实现了一个在线程中执行的run-method并处理数组(如何不重要)。与worker的通信通过信号槽发生。
有一个插槽可以在线程运行时更改数组(如何 - 没关系)。
所以,问题是:是否有必要在此插槽中使用互斥锁数组来包装工作并运行?
或者调用slot的过程中不需要同步?
在 moveToThread 之后,插槽将在什么情况下工作?
有一个worker包含一个数据数组。
它实现了一个在线程中执行的run-method并处理数组(如何不重要)。与worker的通信通过信号槽发生。
有一个插槽可以在线程运行时更改数组(如何 - 没关系)。
所以,问题是:是否有必要在此插槽中使用互斥锁数组来包装工作并运行?
或者调用slot的过程中不需要同步?
在 moveToThread 之后,插槽将在什么情况下工作?
如果我没有混淆任何东西,那么互斥锁不会直接阻止变量 - 它会阻止内存访问。那些。如果您在插槽内放置一个互斥锁,那么它只会阻止重新调用插槽。并且插槽不能同时调用两次(似乎)。因此, slot 和 run 不需要互斥锁。
在 moveToThread 之后,如果在信号上调用插槽,则插槽将在放置对象的环境的上下文中工作。如果您将插槽作为普通函数调用,则在调用对象的上下文中。
UPD:如果您在 run 和 slot 中使用相同的函数更改数组,那么在此函数上挂起互斥锁是有意义的。