Основы операционных систем. Практикум

       

Прогон программы с использованием двух нитей исполнения


Для иллюстрации вышесказанного давайте рассмотрим программу, в которой работают две нити исполнения.

Листинг 6.2. Программа 06-2.c для иллюстрации работы двух нитей исполнения. (html, txt)

Для сборки исполняемого файла при работе редактора связей необходимо явно подключить библиотеку функций для работы с pthread'ами, которая не подключается автоматически. Это делается с помощью добавления к команде компиляции и редактирования связей параметра -lpthread – подключить библиотеку pthread. Наберите текст, откомпилируйте эту программу и запустите на исполнение.

Обратите внимание на отличие результатов этой программы от похожей программы, иллюстрировавшей создание нового процесса (раздел "Прогон программы с fork() с одинаковой работой родителя и ребенка"), которую мы рассматривали на семинарах 3-4. Программа, создававшая новый процесс, печатала дважды одинаковые значения для переменной a, так как адресные пространства различных процессов независимы, и каждый процесс прибавлял 1 к своей собственной переменной a. Рассматриваемая программа печатает два разных значения, так как переменная a является разделяемой, и каждый thread прибавляет 1 к одной и той же переменной.



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