watki w c++

0

tworze kilka watkow.

    for (i=0; i<NUM_THREADS; ++i) {
      thread_args[i] = i;
      rc = pthread_create(&threads[i], NULL, TaskCode, (void *) &thread_args[i]);
   }
   

 
   for (i=0; i<NUM_THREADS; ++i) {
      rc = pthread_join(threads[i], NULL);
   
   }

w thread_args[i] wstawiam id watku by ulatwic sobie obsluge tych watkow ;

w funkcji watku :

    int tid;
 
   tid = *((int *) argument);
   
   while(1)
   {
  
    if(working[tid]==1)
    {
     //cos tam rob
    working[tid]=0;
    }
    
    
   }

 

w working[tid] mam okreslone czy dany watek obecnie ma pracowac czy nie.

Glowny program ma za zadanie okreslac czy jakis watek ma dzialac czy nie.
Niestety po uruchomieniu watkow, main() nie wykonuje swojej pracy. Czeka az watki zakoncza prace.

chodzi mi o to ze program glowny okresla ktory watek ma wykonac prace, nastepnie watek konczy prace i czeka
znowu na pozwolenia od main() czy moze pracowac i tak wkolo. Jak to zrobic?

0

Do synchronizacji wątków sensowniej jest użyć muteksów/zmiennych warunkowych -> link

0

A ja zaproponuję użycie <threads>, które nie dość, że przenośne to jeszcze łatwiejsze w obsłudze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1