У меня есть 2 процесса, каждый из которых создает несколько потоков (2 в этом примере) с помощью кода ниже. Когда я помещаю pthread_join прямо внизу create, он работает, но всегда вызывает потоки по порядку. Я хочу сделать соединения в другом l oop, как показано ниже. Проблема в том, что когда я делаю это, по какой-то причине он создает дубликаты одного и того же потока вместо двух разных потоков.
Поэтому, когда поток запускается, он печатает что-то вроде: «Поток 2.2 запущен Поток 2.2 запущен Поток 1.2 запущен Поток 1.2 запущен» Где первый номер - это номер процесса, а второй - номер потока. Они должны быть «1.2 1.1 2.1 2.2». Может кто-нибудь помочь, пожалуйста?
for(int i = 0; i<num_of_t;i++){
struct threadst args;
args.globalcp = globalcp;
args.lock = lock;
args.num1 = num1+i*((num2-num1+1)/num_of_t);
args.num2 = args.num1+((num2-num1+1)/num_of_t)-1;
args.threadid =i;
args.pid = myOrder;
pthread_create(&threads[i], &attr, findPrimes, (void *)&args);
pthread_join(threads[i], &status);
}
//for(int i = 0; i<num_of_t;i++){
//pthread_join(threads[i], &status);
//}