多线程限制?

时间:2012-02-15 04:20:24

标签: 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)

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

事实证明,我的问题是我每次重新启动它之前都需要pthread_join我的线程。在此之后,我停止获取代码11并在通过Valgrind运行时停止“仍然可以访问”内存。