是否有一种简单的方法使用pthread_t变量?(多次调用线程产生函数)

时间:2011-08-05 06:55:25

标签: asynchronous pthreads

我想使函数异步(设置函数只调用实函数,不返回状态)但我不想用线程数组和额外的互斥体来复杂化以保护索引。
我试图通过mallocing和丢失堆上的线程变量来允许小内存泄漏,但这似乎每隔一段时间就会出现段错误(任何人都可以说是为什么?)。
这是一个小的简单程序(我不想再复杂化了)并且该函数不太可能被称为> 100次,但我宁愿避免泄漏记忆或额外的锁。

* pthread_t在linux中被定义为unsigned long,而且不必是可移植的 附:有没有办法在线程结束时调用free(thread)而不阻塞?


泄漏代码的示例:

void * real_func(void *t)
{
    pthread_mutex_lock(t->something);
    ...
    pthread_mutex_unlock(t->something)l
}

void async_func(type_a *a, type_a *b)
{
pthread_t * thr = malloc(sizeof(pthread_t));
struct two_type_as t;
two_type_as.a=a;
two_type_as.b=b;

pthread_create(thr, NULL, real_func, &t);
}

0 个答案:

没有答案