Создан заказ №834812
27 ноября 2015
Программы на С++
Как заказчик описал требования к работе:
Необходимо написать 3 программы под МacOS или linux(так как работа с потоками и процессами, а на винде с этим туго) на С++.
В приложении методичка.
1 программа
Напишите программу на языке С++, удовлетворяющую всем перечислен-
ным условиям:
1) Программа должна создать четыре процесса и ожидать окон
чания их
выполнения.
2) Порядок создания процессов задается с командной строки (передается
в виде параметров в функцию main), например: ./a.out 1 3 2 4
3) Каждый процесс и основная программа должны выводить на экран со-
общения о начале и завершении своей работы в следующем формате:
PID PPID “сообщение” “время сообщения”
4) Для получения текущего времени используйте функцию ctime() из
.
16
5) Процессы должны использовать функции, перечисленные по порядку:
execv(), execl(), execvp()и execlp() с любыми командами ОС Linux
внутри. Вы можете также использовать любые свои программы.
6) Программа должна анализировать и сообщать о причинах завершения
процессов, используя переменную errno. Все значения ошибок опре-
делены в заголовочном файле
2 программа
Напишите программу на языке C++, в которой:
1) Запускается четное количество потоков параллельно.
2) Каждый нечетный поток (например, первый) создает файл с именем из
своего PID, записывает в него произвольное число символов (от не-
скольких символов до сотен миллионов символов) и закрывает этот
файл.
3) Каждый четный поток (например, второй) открывает файл, созданный
предыдущим потоком с нечетным номером (в нашем случае первым),
читает его, считает количество символов в файле и закрывает его; при
этом четный поток не должен иметь никакой информации о количест-
ве записываемых в файл символов и о том, закончена ли запись в файл
нечетным потоком.
4) Каждый из потоков выводит следующую информацию: ThreadID, PID,
PPID, время, имя файла, количество записанных или считанных сим-
волов.
5) Количество пар создаваемых потоков передается аргументом в про-
грамму с командной строки. Программа должна ждать завершения
работы всех потоков, анализировать и сообщать о причинах заверше-
ния потоков. Для передачи имен файлом между потоками можно ис-
пользовать символьный массив в основной программе.
3 программа:
Решите классическую проблему «поставщик – потребитель» с использованием описанных в
лабораторной работе средств синхронизации.
Постановка задачи:
Один поток производит данные, другой поток их потребляет. В промежуток времени между
изготовлением и потреблением данные хранятся в буфере.
Пример использования: Конвейер команд в Unix.
Исходные данные:
Данные хранятся в циклическом буфере. Циклический буфер описывается некоторой обла-
стью памяти, указателем начала данных и указателем конца данных. Поток-поставщик запи-
сывает данные в конец буфера, поток-потребитель считывает их с начала буфера. После за-
писи или чтения соответствующим образом меняются указатели начала и конца.
Операции чтения/записи должны быть выполнены как взаимоисключающие.
Если операция чтения выполняется над пустым буфером (указатель начала = указатель кон-
ца), поток-потребитель должен быть заблокирован на условной переменной до тех пор, пока
поток-поставщик не запишет в буфер какие-нибудь данные. Если операция записи выполня-
ется над полным буфером, поток-поставщик должен также быть заблокирован на условной
переменной до тех пор, пока поток-потребитель не считает из буфера какие-нибудь данные.
Размер буфера – не менее 10 символов.
Поток-поставщик и поток-потребитель работают в бесконечном цикле.
Поток-поставщик производит по одному символу в последовательности 0,1,2...9,0,1,... и за-
писывает его в буфер через случайный интервал времени 0,5 – 2 сек.
Поток-потребитель считывает по одному символу через случайный интервал времени 0,5 – 2
сек из буфера и выводит их на экран в виде сообщений (например, Символ 0, Символ 1,...)
Каждый поток совершая операцию с буфером выводит на экран информацию о текущем
состоянии буфера до и после операции, тип операции, символ, состояние условной переменно
подробнее
Заказчик
заплатил
заплатил
200 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
28 ноября 2015
Заказ завершен, заказчик получил финальный файл с работой
5
Программы на С++.jpg
2020-12-05 09:48
Последний отзыв студента о бирже Автор24
Общая оценка
4
Положительно
Не первый раз уже работаю с этим автором и я очень довольна, как всегда все быстро и качественно, всем рекомендую!!!