Написать программу, содержащую два потока, обменивающихся информацией через неименованный канал (pipe).
В качестве сообщения необходимо передавать результат выполнения функции.Функция-getpid - получение id текущего процесса
Устранить блокировки потоков для случая чтения из пустого канала двумя способами (pipe2() и fcntl()).
Шаблон программы представлен ниже:
объявить флаг завершения потока 1;
объявить флаг завершения потока 2;
объявить идентификатор неименованного канала;
функция потока 1()
{
объявить буфер;
пока (флаг завершения потока 1 не установлен)
{
сформировать сообщение в буфере;
записать сообщение из буфера в неименованный канал;
задержать на время;
}
}
функция потока 2()
{
объявить буфер;
пока (флаг завершения потока 2 не установлен)
{
очистить буфер;
прочитать сообщение из неименованного канала в буфер;
вывести сообщение на экран;
}
}
основная программа()
{
объявить идентификатор потока 1;
объявить идентификатор потока 2;
создать неименованный канал;
создать поток из функции потока 1;
создать поток из функции потока 2;
ждать нажатия клавиши;
установить флаг завершения потока 1;
установить флаг завершения потока 2;
ждать завершения потока 1;
ждать завершения потока 2;
закрыть неименованный канал;
}
| Гарантия на работу | 1 год |
| Средний балл | 4.53 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |