我有这个“有趣”的问题。我有这个遗留代码,看起来像
int main()
{
while(true) {
doSomething();
}
}
我想在许多线程中复制 doSomething(),这样现在 main() 看起来像
int main() {
runManyThreads(threadEntry)
}
void threadEntry() {
while(true) {
doSomething();
}
}
问题是 doSomething() 访问许多全局变量和静态变量,我无法更改它的代码。是否有复制这些静态变量的技巧,因此每个线程都有自己的集合? (某种线程本地存储,但不影响 doSomething()).. 我使用 VisualC++
最佳答案
长话短说,不,至少不合理。
在不想更改 doSomething()
的情况下,最好的办法可能是运行现有进程的多个副本,而不是尝试使用多线程。如果每个线程都将使用全局变量的单独副本,无论如何,多线程和多进程之间的区别在任何情况下都将是相当小的。
关于windows - C/C++ : duplicate main() loop in many threads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346637/