使用argv中的命令初始化全局互斥锁

时间:2015-05-04 03:04:55

标签: pthreads global-variables global mutex argv

我希望使用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;
}

那么我该如何才能在用户输入定义的所有函数中访问互斥锁?

1 个答案:

答案 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>
";