windows - C/C++ : duplicate main() loop in many threads

标签 windows multithreading visual-c++

我有这个“有趣”的问题。我有这个遗留代码,看起来像

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/

相关文章:

c# - 在内核空间模拟鼠标点击

windows - 如何为 Windows 或 Mac 或 Linux 系统发布 Electron 应用程序?

java - Realm 在一个线程中保存数据在另一个线程中获取

java - long 和 double 赋值不是原子的——这有什么关系?

C++ 如何使用 onClick 事件创建文本框?

c - 有没有办法在 Windows 7 上以编程方式激活 Windows

windows - AVPlayer 在 tvOS 13.4 上使用 HLS 直播流 url 失败(适用于 tvOS 13.3)

c++ - 当检查是eof时,使用getline读取文本文件会导致无限循环

c# - 通过线程以一定的时间间隔执行任务一定次数

windows - 在没有 lodctr 的情况下注册性能计数器