Архитектура Microsoft Windows для разработчиков

Процессы и потоки


Приложение, разработанное для Windows, состоит из одного или более процессов (рис. 1.3). Процесс — это, попросту говоря, выполняемая программа. Ему принадлежат адресное пространство и выделенные ресурсы, а также один или более потоков, выполняющихся в его контексте.

Поток — это основная единица, которой операционная система выделяет процессорное время, и минимальный «квант» кода, который может быть запланирован для выполнения. Кроме того, это часть процесса, выполняющаяся в каждый момент времени. Поток работает в адресном пространстве процесса и использует ресурсы, выделенные процессу.

Рис. 1.3 Приоритеты потоков

Любой процесс содержит хотя бы один поток. Каждый процесс 16-разрядного Windows-приложения или программы MS-DOS имеет только один поток, тогда как процессы 32-разрядных Windows-приложений могут включать их несколько.

Примечание Ресурсами владеют процессы, а не потоки — последние только используют ресурсы, выделенные процессу. Например, если программа запросит порт, им будет управлять процесс. Любой поток процесса может обратиться к порту, но ни один из них не вправе самостоятельно запросить использование порта.

> Изучение работы потоков

  1. Завершите все работающие программы.
  2. В меню Start выберите пункты Programs, Accessories, System Tools, System Monitor.

    Будет запущен System Monitor.

  3. В меню Edit щелкните команду Remove Item.
  4. Выделите все ранее добавленные элементы и щелкните ОК.

    График очистится.

  5. В меню View щелкните Numeric Charts.
  6. В меню Edit щелкните Add Item.
  7. Из списка Category выберите пункт Kernel, из списка Item выберите пункт Threads, а затем щелкните кнопку ОК.

    Сколько потоков активно?

    ответ



  8. В меню Start выберите пункты Programs, Accessories, WordPad.
  9. Переключитесь на System Monitor.

    Сколько потоков активно?

    ответ

  10. На панели инструментов WordPad щелкните кнопку Open.
  11. Переключитесь в окно System Monitor и несколько секунд понаблюдайте за окном KerneL:Threads.

    Сколько потоков активно?

    ответ

  12. Закройте диалоговое окно Open приложения WordPad и завершите работу с ним.

  13. Переключитесь в окно System Monitor.

    Число потоков должно стать равным первоначальному значению.

  14. В меню Start выберите Programs, MS-DOS Prompt.


  15. Переключитесь в окно System Monitor.

    Сколько потоков активно?

    ответ

    Почему окно MS-DOS породило два потока?

    > Изучение работы многопоточного приложения

  16. Из папки WA\Practice\Ch01 запустите демонстрационную многопоточную про грамму Winbezmt.exe.


  17. Переключитесь в окно System Monitor.

    Сколько потоков активно?

    ответ

  18. Переключитесь на многопоточную демонстрационную программу.


  19. В меню Bezier выберите Add Thread (или нажмите клавиши CTRL+T).


  20. Переключитесь в окно System Monitor.

    Сколько потоков активно?

    ответ

  21. Добавьте еще два потока. Сколько теперь активных потоков?


  22. Завершите работу со всеми программами, включая System Monitor.





  23. Содержание раздела