ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Понятие о нити исполнения (thread) в UNIX. Идентификатор нити исполнения. Функция pthread_self().http://cs.mipt.ru/docs/courses/osstud/04/ch4.htm - l0404Нити процесса разделяют его программный код, глобальные переменные и системные ресурсы, но каждая нить имеет свой собственный программный счетчик, свое содержимое регистров и свой собственный стек. Поскольку глобальные переменные у нитей исполнения являются общими, то они могут использовать их, как элементы разделяемой памяти, не прибегая к механизму, описанному выше. В различных версиях операционной системы UNIX существуют различные интерфейсы, обеспечивающие работу с нитями исполнения. Мы с вами кратко ознакомимся с некоторыми функциями, позволяющими разделить процесс на thread'ы и управлять их поведением, соответствующими стандарту POSIX. Нити исполнения, удовлетворяющие стандарту POSIX, принято называть POSIX thread'ами или кратко pthread'ами. http://cs.mipt.ru/docs/courses/osstud/04/ch4.htm - l0404aК сожалению, операционная система Linux не полностью поддерживает нити исполнения на уровне ядра системы. При создании нового thread'а запускается новый традиционный процесс, разделяющий с родительским традиционным процессом его ресурсы, программный код и данные, расположенные вне стека, т.е. фактически действительно создается новый thread, но ядро не умеет определять, что эти thread'ы являются составными частями одного целого. Это знает только специальный процесс-координатор, работающий на пользовательском уровне и стартующий при первом вызове функций, обеспечивающих POSIX интерфейс для нитей исполнения. Поэтому мы сможем наблюдать не все преимущества использования нитей исполнения (в частности, ускорить решение задачи с их помощью вряд ли получится), но даже в этом случае, thread'ы можно использовать как очень удобный способ для создания процессов с общими ресурсами, программным кодом и разделяемой памятью. Каждая нить исполнения, как и процесс, имеет в системе свой собственный уникальный номер - идентификатор thread'a. Поскольку традиционный процесс в концепции нитей исполнения трактуется как процесс, содержащий единственную нить исполнения, то мы можем узнать идентификатор этой нити и для любого обычного процесса. Для этого используется функция pthread_self(). Нить исполнения создаваемую при рождении нового процесса принято называть начальной или главной нитью исполнения этого процесса. Не нашли, что искали? Воспользуйтесь поиском:
|