Page 71 - 4989
P. 71

кількості логічних процесорів можна скористатись функцією

                  void WINAPI GetSystemInfo(  _Out_ LPSYSTEM_INFO lpSystemInfo);

                        У  результаті  її  виклику  заповнюється  структура  типу
                  SYSTEM_INFO, у якій кількість логічних процесорів зберігається
                  в полі dwNumberOfProcessors.

                        ОС  Windows  є  багатозадачною,  тобто  підтримує  виконання
                  багатьох  потоків  одночасно  (якщо  в  системі  встановлено
                  багатоядерний процесор і/або кілька процесорів) або почергово,

                  швидко перемикаючи потоки, так що у користувача створюється
                  ілюзія  їх  одночасного  виконання.  Спосіб  планування  потоків
                  реалізує  витісняючу  багатозадачність:  кожному  потоку  ОС

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

                        - виконання потоку було призупинено функцією Sleep;
                        - потік перейшов у стан очікування об’єкта синхронізації;
                        - з’явився готовий до виконання потік з вищим пріоритетом;
                        - потік завершив виконання.

                        АРІ-функція  Sleep  призупиняє  виконання  потоку  на  час,
                  заданий  у  якості  її  аргумента  (в  мілісекундах).  Ця  функція  не
                  забезпечує  точність  задання  часового  інтервалу  (реальна

                  тривалість  «сну»  може  відрізнятись  на  кілька  мілісекунд).  У
                  багатьох  випадках  така  точність  прийнятна,  однак  якщо  слід
                  задати  точний  інтервал  часу,  краще  скористатись  об’єктом
                  синхронізації WaitableTimer.

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

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



                        7.3.2  Засоби синхронізації потоків

                        Оскільки потоки в  багатозадачній ОС  можуть  виконуватись
                  одночасно, то можлива ситуація, коли кілька потоків одночасно

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


                                                                 71
   66   67   68   69   70   71   72   73   74   75   76