我在 C 中使用 posix 线程。我的程序中有两个线程,thread1 和 thread2。线程 1 启动线程 2。
thread1 维护一个变量 var1,基于该变量必须安全退出 thread2。
thread2 调用许多冗长的函数(其运行时间最长可达 5 秒)。在thread2中有很多使用malloc的内存分配。一旦 var1 变为真,我需要关闭 thread2,但只有在释放所有分配的内存之后。如何做到这一点?
代码如下所示:
void * func1(void *arg)
{
pthread_create(&thread2, &attr, func2, NULL);
while(1)
{
// ...
var1 = func3();
if(var1 == true)
{
// Cancel thread2
}
// ...
}
}
void * func2(void *arg)
{
// ...
func4(); // runs for 2 sec
char* var2 = malloc(10);
func5(); // runs for 5 sec
char* var3 = malloc(20);
// ...
cleanup:
free(var2);
free(var3);
return (void*) 0;
}