Поток может заканчиваться только в то время как 5 потоков (включая себя) работают [закрыто]Linux

Ответить
Anonymous
 Поток может заканчиваться только в то время как 5 потоков (включая себя) работают [закрыто]

Сообщение Anonymous »

Барьер потоков
Процесс P5 должен создать 44 потока: T5.1, T5.2, ..., T5.44. Выполнение потоков процесса P5 должно следовать условиям синхронизации: < /p>

Основной поток процесса, то есть T5.0 не должен прекращаться до других 44 потоков. /> Поток T5.10 может заканчиваться только в то время как 5 потоков (включая себя) работают. (Мне интересно об этой части). Как я могу это реализовать?

Код: Выделить всё

void* thread_func_p5(void* arg) {

int thread_no = (int)(long)arg;
int sem_val;

sem_wait(&sem_p5_barrier);

if (sem_getvalue(&sem_p5_barrier, &sem_val) == 0 && sem_val == 0)
{
sem_post(&sem_t5_10_cond);
}

info(BEGIN, 5, thread_no);

if (thread_no == 10) {
sem_wait(&sem_t5_10_cond);
}

info(END, 5, thread_no);

sem_post(&sem_p5_barrier);

return NULL;
}
< /code>
 пояснения: < /strong> < /p>
Информировать тестера о запуске потока:
info(BEGIN, 5, thread_no)< /code> < /p>
сообщить тестированию о завершении потока:
info(END, 5, thread_no)

Я свободен использовать любые механизмы синхронизации Linux, такие как: System V Semaphores, Posix Semaphores или Posix Locks и переменные условия.

Код: Выделить всё

sem_p5_barrier
и sem_t5_cond являются моим собственным изобретением.
Темы должны завершить.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... re-running
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»