我正在使用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()
功能将返回错误。
我做错了什么或有什么建议吗?
答案 0 :(得分:2)
创建线程时,它会为线程的堆栈消耗资源,全局资源,通常是内存。
如果采取以下两个操作之一,则在步骤和时释放这些资源
pthread_join()
,传递线程的ID。pthread_detach()
创建胎面后随时传递线程的ID。您展示的代码不会执行上述两项操作。
因此,创建这些线程的程序(在while
- 循环内)迟早会耗尽资源来创建任何新线程,因此pthread_create()
开始失败。