新手求助:关于thread_pool_attr_t 的问题。

小弟是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的拷贝?

先谢谢各位达人先!!!!
:laughing:

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);
}

感谢仁兄!!!!!!! :laughing: :laughing: :laughing:

另外问下,仁兄的源代码小弟在哪里可以拿到?

我还搜索过qnx的安装目录,木有发现有源代码,只有头文件。

杯具。