Я попытался использовать pthread, чтобы выполнить какую-то задачу быстрее. У меня есть тысячи файлов (в аргументах) для обработки, и я хочу много раз создавать лишь небольшое количество потоков.
Вот мой код:
void callThread(){
int nbt = 0;
pthread_t *vp = (pthread_t*)malloc(sizeof(pthread_t)*NBTHREAD);
for(int i=0;i<args.size();i+=NBTHREAD){
for(int j=0;j<NBTHREAD;j++){
if(i+j<args.size()){
pthread_create(&vp[j],NULL,calcul,&args[i+j]);
nbt++;
}
}
for(int k=0;k<nbt;k++){
if(pthread_join(vp[k], NULL)){
cout<<"ERROR pthread_join()"<<endl;
}
}
}
}
Он возвращает ошибку, я не знаю, хороший ли это способ решить мою проблему. Все ресурсы находятся в args (векторе структуры) и являются независимыми.
Спасибо за помощь.
ulimit -u
. - person Gabriel Southern   schedule 24.01.2013