Page 76 - 4989
P. 76

ручне скидання і викликати функцію ResetEvent після того, як всі
            потоки виконали обробку.

                  Для  простих  операцій  з  глобальними  змінними,  такими  як

            інкремент, декремент, присвоєння, додавання і віднімання, можна
            обійтися  без  об’єктів  синхронізації,  якщо  застосувати  атомарні
            функції               (Interlocked-функції):                   InterlockedIncrement,

            InterlockedDecrement,  InterlockedExchangeAdd  та  ін.  (детальніше
            про       атомарні        функції        див.      https://msdn.microsoft.com/en-
            us/library/windows/desktop/ms684122%28v=vs.85%29.aspx).                                 Ці
            функції гарантують, що під час виконання операції над змінною

            потік  не  буде  витіснений,  і  лише  один  логічний  процесор  буде
            мати  доступ  до  змінної.  Наприклад,  операцію  з  глобальною
            змінною

                  N+=delta;
                  для  гарантування  її  цілісності  при  багатопоточній  обробці
            можна замінити на

                  InterlockedExchangeAdd(&N, delta);


                  Детальну  інформацію  по  функціям  для  роботи  з  об’єктами
            синхронізації               можна            знайти            за          посиланням
            https://msdn.microsoft.com/en-

            us/library/windows/desktop/ms686360%28v=vs.85%29.aspx



                                  7.4  Порядок виконання роботи

                  1. Проаналізувавши  завдання,  визначити,  чи  потрібно
                      застосовувати в програмі об’єкти синхронізації і які саме.
                  2. Створити консольний проект.

                  3. Написати  програму  для  реалізації  індивідуального
                      завдання.  Забезпечити  вивід  на  екран  інформації,  яка
                      відображає хід виконання програми.

                  4. Виконати відлагодження програми. Якщо для наведених у
                      завданні  значень  розміру  масиву  програма  виконується
                      надто  швидко  або  надто  повільно,  варто  змінити  розмір

                      так, щоб час виконання становив 5...10 секунд.




                                                           76
   71   72   73   74   75   76   77   78   79   80   81