线程创建将在一段时间后停止工作

时间:2017-08-19 05:14:31

标签: c linux multithreading debian pthreads

我正在使用Linux

void *threadStart()
{
    int threadClose;
    led = 1;
    delay(10);
    led = 0;
    pthread_exit(&threadClose);
}

main()
{
    pthread_t thread1;
    while(1)
    {
        pthread_create(&thread1,NULL,threadStart,NULL);
        /* calling some function calls here */
    }
}

这是我的C代码。当我编译它时,这将成功编译,当我运行该程序时,LED有时会开始闪烁。 LED将停止闪烁,pthread_create()功能将返回错误。

我做错了什么或有什么建议吗?

1 个答案:

答案 0 :(得分:2)

创建线程时,它会为线程的堆栈消耗资源,全局资源,通常是内存。

如果采取以下两个操作之一,则在步骤时释放这些资源

    调用
  • pthread_join(),传递线程的ID。
  • 线程被分离。这可以在使用pthread_detach()创建胎面后随时传递线程的ID。

您展示的代码不会执行上述两项操作。

因此,创建这些线程的程序(在while - 循环内)迟早会耗尽资源来创建任何新线程,因此pthread_create()开始失败。