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 [2019/02/27 06:58] kelcourses:high_performance_computing:producer_consumer [2019/09/09 16:44] 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.txt · Last modified: 2024/03/04 02:19 by odoronin