【发布时间】:2016-11-27 14:49:25
【问题描述】:
我想创建多个线程并在创建它们的同时启动它,以便代码以最快的速度运行 我试着这样做:
for (i = 1; i < nbClients+1; i++)
{
pthread_create(&tClient, NULL, procedureClient, &i);
pthread_join(tClient, NULL);
free(clients[i].panier); //Libération de la mémoire pour chaque panier
}
如果我执行 pthread_join,主线程将被挂起,因此它是连续的,所以如果我这样做:
for (i = 1; i < nbClients+1; i++)
{
pthread_create(&tClient, NULL, procedureClient, &i);
free(clients[i].panier); //Libération de la mémoire pour chaque panier
}
这个执行是并行的吗?如果我的 printf 有问题,这正常吗? (我认为这很正常,但我更愿意问)
谢谢
【问题讨论】:
-
哦,对不起,伙计,我忘了脱线!已编辑
-
在创建第二个线程之前,您正在第一个线程上进行连接。这可能是最快的,因为它可以防止线程同时在不同的内核上运行,这对缓存更好。
-
是的,也许是的,但我有一个任务,我的代码必须是并行编程,所以线程必须同时运行,不是吗?如果我使用 phthread_join,代码就不能再并行运行了,不是吗?
标签: c multithreading pthreads sequential