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 revision Previous revision
Next revision
Previous revision
courses:high_performance_computing:producer_consumer [2019/02/27 06:58]
kel
courses:high_performance_computing:producer_consumer [2019/09/09 16:44] (current)
odoronin
Line 13: Line 13:
     - Потоки consumer не должны дублировать вычисления друг с другом одних и тех же значений     - Потоки consumer не должны дублировать вычисления друг с другом одних и тех же значений
     - В качестве возвращаемого значения поток должен вернуть свою частичную посчитанную сумму     - В качестве возвращаемого значения поток должен вернуть свою частичную посчитанную сумму
-    - Хранить промежуточные значения своей суммы поток должен в TLS-переменной,​ объявленной за границами области видимости функции 
   * Задача потока-interruptor проста:​ пока происходит процесс обновления значений,​ он должен постоянно пытаться остановить случайный поток consumer (вычисление случайного потока происходит перед каждой попыткой остановки). Как только поток producer произвел последнее обновление,​ этот поток завершается.   * Задача потока-interruptor проста:​ пока происходит процесс обновления значений,​ он должен постоянно пытаться остановить случайный поток consumer (вычисление случайного потока происходит перед каждой попыткой остановки). Как только поток producer произвел последнее обновление,​ этот поток завершается.
  
Line 21: Line 20:
   - Число потоков consumer   - Число потоков consumer
   - Верхний предел сна consumer в миллисекундах   - Верхний предел сна consumer в миллисекундах
 +
 +
 +Так-же необходимо реализовать поддержку ключа --debug, при использовании которого каждый consumer-поток будет выводить пару (tid, psum), где tid реализуется с помощью функции get_tid(), а psum это сумма которую посчитал поток. Вывод значений psum происходит при каждом изменении.
 +
 +Функция get_tid() возвращает идентификатор потока. Идентификатор потока это не проста pthread_self(),​ а уникальное для каждого потока число в диапозоне от 1 .. 3+N
  
 В поток вывода должно попадать только результирующее значение,​ по умолчанию никакой отладочной или запросной информации выводиться не должно. В поток вывода должно попадать только результирующее значение,​ по умолчанию никакой отладочной или запросной информации выводиться не должно.
Line 49: Line 53:
   // return aggregated sum of values   // return aggregated sum of values
  
 +  return 0;
 +}
 +
 +int get_tid() {
 +  // 1 to 3+N thread ID
 +  ​
   return 0;   return 0;
 } }
courses/high_performance_computing/producer_consumer.1551239896.txt.gz · Last modified: 2019/02/27 06:58 by kel