courses:high_performance_computing:producer_consumer
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
courses:high_performance_computing:producer_consumer [2019/09/09 16:44] – odoronin | courses:high_performance_computing:producer_consumer [2020/05/03 12:25] – kel | ||
---|---|---|---|
Line 6: | Line 6: | ||
- interruptor | - interruptor | ||
- N потоков consumer | - N потоков consumer | ||
- | На стандартный ввод программе подается строка - список чисел, разделённых пробелом. Длина списка чисел не задаётся - считывание происходит до перевода каретки. | + | На стандартный ввод программе подается строка - список чисел, разделённых пробелом |
* Задача producer-потока - получить на вход список чисел, и по очереди использовать каждое значение из этого списка для обновления переменной разделяемой между потоками | * Задача producer-потока - получить на вход список чисел, и по очереди использовать каждое значение из этого списка для обновления переменной разделяемой между потоками | ||
* Задача consumer-потоков отреагировать на уведомление от producer и набирать сумму полученных значений. Также этот поток должен защититься от попыток потока-interruptor его остановить. Дополнительные условия: | * Задача consumer-потоков отреагировать на уведомление от producer и набирать сумму полученных значений. Также этот поток должен защититься от попыток потока-interruptor его остановить. Дополнительные условия: | ||
Line 24: | Line 24: | ||
Так-же необходимо реализовать поддержку ключа --debug, при использовании которого каждый consumer-поток будет выводить пару (tid, psum), где tid реализуется с помощью функции get_tid(), а psum это сумма которую посчитал поток. Вывод значений psum происходит при каждом изменении. | Так-же необходимо реализовать поддержку ключа --debug, при использовании которого каждый consumer-поток будет выводить пару (tid, psum), где tid реализуется с помощью функции get_tid(), а psum это сумма которую посчитал поток. Вывод значений psum происходит при каждом изменении. | ||
- | Функция get_tid() возвращает идентификатор потока. Идентификатор потока это не проста pthread_self(), | + | Функция get_tid() возвращает идентификатор потока. Идентификатор потока это не проста pthread_self(), |
В поток вывода должно попадать только результирующее значение, | В поток вывода должно попадать только результирующее значение, |
courses/high_performance_computing/producer_consumer.txt · Last modified: 2024/03/04 02:19 by odoronin