Я пытаюсь реализовать канал с функциями чтения, записи, закрытия. Мой основной создает 2 потока, один читает из массива и пишет в канал, а другой читает из канала и пишет в стандартный вывод. Я использую простой циклический буфер в качестве канала, и я использовал алгоритм Петерсона для синхронизации двух из них.
Мой основной должен ждать либо они завершат свою работу, либо получит вход "выход" из stdin, в которомВ случае, если он должен вызвать pipe_close () и прекратить 2 потока, заставив их вернуть
Как я могу получить ввод от stdin без блокировки? Как я могу заставить прекратить темы? Должен ли я использовать что-то вроде алгоритма Лампорта для синхронизации всех трех из них?
Примечание: я не могу использовать никакие функции из pthread.h, кроме create
void *myread(void *par) {
//read char from array store in c
write_to_pipe(c)
}
void *mywrite(void *par) {
read_from_pipe(&c);
//print to stdout
}
main() {
//create threads
//wait until theads return or "quit" is written in stdin, call pipe_close and cause threads to return
}