Попытка понять код C (семафоры и их синхронизация) - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь понять некоторый код C, касающийся операционной системы / создания потоков синхронизации

line 1: targs[0]->id=1; /* thread number 1 */
line 2: targs[0]->sec=1; /* how long to sleep */
line 3: targs[0]->signal[1]=1; /* which threads to wake up when done */
line 4: targs[0]->signal[4]=1;
line 5: sem_init(&sem[targs[0]->id-1],SHARED,1); /* start waiting or running? */
line 6: pthread_create(&tid[0], NULL, tfunc, (void *) targs[0]);

У меня вопрос. Что делает "sem_init ()" в строке 5: с помощью ((& sem [targs [0] -> id-1], SHARED, 1);), "& sem" ссылается на созданный мной массив, который не является здесь targs [0] получает Id минус 1? это правильно?

pthread_create = создает поток, который должен быть нулевым для его запуска?

...