c++ - 多线程限制?

标签 c++ multithreading

我正在 linux 中使用 c++ 中的线程编写程序。

目前,我只保留一个线程数组,每过一秒,我就会检查哪些线程已完成,然后重新启动它们。这很糟糕吗?我需要让这个程序运行很长时间。就像现在一样,经过这么多次重新启动线程的循环(上次试验中的第 100 次循环)后,我得到了代码 11。我认为重复使用线程并确保我在任何时候都只运行少量线程,这样我就不会达到极限。我用的数组只有8个大小(当然我不是每次都从8开始,只是那些已经停止的)。

有什么想法吗?

我的代码如下:

if ( loop_times == 0 || pthread_kill(threads[t],0) != 0 ) 
{ 
    rc = pthread_create(&threads[t], NULL, thread_stall, (void *)NULL); 
    if (rc){ 
        printf("ERROR; return code from pthread_create() is %d\n", rc); 
        exit(-1); 
    } 
thread_count++; 
} 

loop_times 变量只是为了让我可以进入循环并第一次启动线程。否则,我会得到一个 SEGFAULT,因为线程之前没有启动过。

另外,我一直想查看PTHREAD_THREADS_MAX的值,但我无法打印它(即使包含limits.h)

最佳答案

如果你想使用多线程...最好使用线程池。 将一组线程作为分离的线程启动,然后通过一个队列,您可以将信息发送到每个线程,以便它可以处理并等待您的下一个输入。

关于c++ - 多线程限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287838/

相关文章:

c++ - 如何打印出C-String的内存地址?

java - Java 中同步的多线程安全性

c++ - 检测线程是否被操作系统中断

java : execute a method over a maximum period of time

iphone - 在后台线程上准备 View 元素

c# - 超时模式——Thread.Abort 到底有多糟糕?

c++ - 对 libjpeg : jpeg_read_scanlines 感到困惑

c++ - VS 2010 中 <afxcontrolbars.h> 的问题

C++ 快速高效地对 40 字节数组执行 bit_count 和 AND 运算

c++ - 链接到 Unix 上的 Clang 和 LLVM - 强制使用 LLVM 的编译器标志?