小弟是QNX的新手,最近在学习QNX编程,遇到了一个thread pool的问题,还请大家不吝赐教啊!!!
在创建thread pool的时候,thread_pool_create 需要一个thread_pool_attr_t类型的参数,但是在所有的文档中,都没有提到这个参数的存储区的问题。也就是说,这个参数,是否可以使用一个stack上的局部变量?还是说这个变量的生存期必须要与thread pool一样长才行。
在所有能找到的参考代码中,这个变量都是与thread pool一样长的(因为这个代码中,thread_pool_start 不会返回),但是问题是必须要这样吗?还是thread_pool_create 会自己保存一份attr的拷贝?
先谢谢各位达人先!!!!

pthread_pool_create()会保存attr的拷贝,详细看代码
thread_pool_t *thread_pool_create(thread_pool_attr_t *attr, unsigned flags) {
thread_pool_t *pool;
if((pool = malloc(sizeof *pool)) == NULL) {
return NULL;
}
memset(pool,0,sizeof *pool);
memcpy(pool,attr,sizeof *attr);
// @@@ adjust/validate params
pool->flags = flags & ~(POOL_FLAG_EXITING | POOL_FLAG_CHANGING);
pool->props = (struct _pool_properties *)calloc(1,
sizeof(struct _pool_properties));
if (pool->props == NULL) {
free(pool);
return(NULL);
}
pthread_mutex_init(&(((struct _pool_properties *)pool->props)->inline_lock),
NULL);
return(pool);
}
我还搜索过qnx的安装目录,木有发现有源代码,只有头文件。
杯具。