背景:项目测试的过程中发现程序进入了死循环,追查原因发现是因为创建工作线程的失败的时候没有释放资源引起的,经过陶工的提醒,测试了一下,发现程序在执行到创建了255次工作线程之后必然失败。这让我觉得很奇怪,因为每次线程创建完,版本加载之后,线程都会返回的,为什么会失败了呢,查看创建失败的错误码是11(EAGAIN)。后面上网查了一下资料,发现可能是创建工作线程设置的属性不对,我才用的是默认值,那么创建的工作线程不能自己回收资源,需要使用pthread_join函数才能回收资源。
背景:项目测试的过程中发现程序进入了死循环,追查原因发现是因为创建工作线程的失败的时候没有释放资源引起的,经过陶工的提醒,测试了一下,发现程序在执行到创建了255次工作线程之后必然失败。这让我觉得很奇怪,因为每次线程创建完,版本加载之后,线程都会返回的,为什么会失败了呢,查看创建失败的错误码是11(EAGAIN)。后面上网查了一下资料,发现可能是创建工作线程设置的属性不对,我才用的是默认值,那么创建的工作线程不能自己回收资源,需要使用pthread_join函数才能回收资源。