Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


courses:high_performance_computing:producer_consumer

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
courses:high_performance_computing:producer_consumer [2021/10/02 23:46] kelcourses:high_performance_computing:producer_consumer [2021/10/04 08:00] kel
Line 2: Line 2:
 Ваша задача - реализовать классический паттерн producer-consumer с небольшими дополнительными условиями. Ваша задача - реализовать классический паттерн producer-consumer с небольшими дополнительными условиями.
 Программа должна состоять из 3+N потоков:  Программа должна состоять из 3+N потоков: 
-  - главный+  - Главный
   - producer   - producer
   - interruptor   - interruptor
Line 14: Line 14:
     - В качестве возвращаемого значения поток должен вернуть свою частичную посчитанную сумму     - В качестве возвращаемого значения поток должен вернуть свою частичную посчитанную сумму
   * Задача потока-interruptor проста: пока происходит процесс обновления значений, он должен постоянно пытаться остановить случайный поток consumer (вычисление случайного потока происходит перед каждой попыткой остановки). Как только поток producer произвел последнее обновление, этот поток завершается.   * Задача потока-interruptor проста: пока происходит процесс обновления значений, он должен постоянно пытаться остановить случайный поток consumer (вычисление случайного потока происходит перед каждой попыткой остановки). Как только поток producer произвел последнее обновление, этот поток завершается.
-  * Завершение приложения происходит по посылке сигнала SIGTERM, обработку которого нужно также добавить. В случае, если в этот момент поток, читающий данные с файла, находится в режиме блокирующего чтения, - он также должен корректно завершиться.+  * Завершение приложения происходит или при считывании перевода каретки из файла или по посылке сигнала SIGTERM, обработку которого нужно также добавить. В случае, если в этот момент поток, читающий данные с файла, находится в режиме блокирующего чтения, - он также должен корректно завершиться.
 Функция run_threads должна запускать все потоки, дожидаться их выполнения, и возвращать результат общего суммирования.  Функция run_threads должна запускать все потоки, дожидаться их выполнения, и возвращать результат общего суммирования. 
  
courses/high_performance_computing/producer_consumer.txt · Last modified: 2024/03/04 02:19 by odoronin