我希望使用argv中的数据定义全局互斥锁。没问题,除了我还希望这个互斥锁是全局的。
这不是全局::
int main (int argc, char **argv)
{
int arg_1 = atoi(argv[1]);
pthread_mutex_t mutex[arg_1];
return 0;
}
这是不可能的:
pthread_mutex_t mutex[arg_1];
int main (int argc, char **argv) {
int arg_1 = atoi(argv[1]);`
return 0;
}
那么我该如何才能在用户输入定义的所有函数中访问互斥锁?
答案 0 :(得分:0)
您可以使用动态分配,就像使用任何其他类型一样。这里唯一的区别是动态分配的互斥锁必须使用pthread_mutex_t *mutex;
size_t n_mutex;
int main (int argc, char **argv)
{
size_t i;
if (argc < 2)
return 1;
n_mutex = atoi(argv[1]);
if (n_mutex == 0)
return 2;
mutex = calloc(n_mutex, sizeof mutex[0]);
if (!mutex)
return 3;
for (i = 0; i < n_mutex; i++) {
if (pthread_mutex_init(&mutex[i], NULL))
return 4;
}
/* global array mutex[] is initialised and can be used */
return 0;
}
初始化:
$select_query = @mysql_query("select id,program_name,company,date_prog from program_details where id = $i");
$fetch_query = @mysql_fetch_array($select_query. MYSQL_NUM);
list($id, $pgname, $comp, $datephp) = $fetch_query;
echo "
<div>
$id $pgname $comp $datephp
</div>
";