Posix win threads for windows что это + видео обзор

POSIX Threads

POSIX Threads — стандарт POSIX реализации потоков (нитей) выполнения, определяющий API для создания и управления ими.

Библиотеки, реализующие этот стандарт (и функции этого стандарта), обычно называются Pthreads (функции имеют приставку «pthread_»). Хотя наиболее известны варианты для Unix-подобных операционных систем, таких как Linux или Solaris, но существует и реализация для Microsoft Windows (Pthreads-w32)

Содержание

Основные функции стандарта

Pthreads определяет набор типов и функций на языке программирования Си. Заголовочный файл — pthread.h.

Пример

Пример использования потоков на языке C:

Пример использования потоков на языке C++:

Представленные программы используют два потока, печатающих в консоль сообщения, один, печатающий ‘a’, второй — ‘b’. Вывод сообщений смешивается в результате переключения выполнения между потоками или одновременном выполнении на мультипроцессорных системах.

Отличие состоит в том, что программа на C создает один новый поток для печати ‘b’, а основной поток печатает ‘a’. Основной поток (после печати ‘aaaaa….’) ждёт завершения дочернего потока.

Программа на C++ создает два новых потока, один печатает ‘a’, второй, соответственно, — ‘b’. Основной поток ждёт завершения обоих дочерних потоков.

См. также

Ссылки

Смотреть что такое «POSIX Threads» в других словарях:

POSIX Threads — is a POSIX standard for threads. The standard defines an API for creating and manipulating threads.Libraries implementing the POSIX Threads standard are often named Pthreads. Pthreads are most commonly used on Unix like POSIX systems such as… … Wikipedia

POSIX — (IPAEng|ˈpɒzɪks) or Portable Operating System Interface cite web | title = POSIX | url = http://standards.ieee.org/regauth/posix/ | work = Standards | publisher = IEEE] is the collective name of a family of related standards specified by the IEEE … Wikipedia

POSIX — est le nom d une famille de standards définie depuis 1988 par l Institute of Electrical and Electronics Engineers et formellement désignée IEEE 1003. Ces standards ont émergé d un projet de standardisation des API des logiciels destinés à… … Wikipédia en Français

Posix — est le nom d une famille de standards définie depuis 1988 par l IEEE et formellement désignée IEEE 1003. Ces standards ont émergé d un projet de standardisation des API des logiciels destinés à fonctionner sur des variantes du système d… … Wikipédia en Français

POSIX — es el acrónimo de Portable Operating System Interface; la X viene de UNIX como seña de identidad de la API. El término fue sugerido por Richard Stallman en respuesta a la demanda de la IEEE, que buscaba un nombre fácil de recordar. Una traducción … Wikipedia Español

Поток POSIX — POSIX Threads стандарт потоков (нитей) выполнения, определяющий API для создания и управления ими. Библиотеки, реализующие этот стандарт (и функции этого стандарта), обычно называются Pthreads (функции имеют приставку «pthread »). Хотя наиболее… … Википедия

Native POSIX Thread Library — Die Native POSIX Thread Library (NPTL) ist eine moderne Implementierung einer Threading Bibliothek für Linux. Sie wird in Verbindung mit der GNU C Library (glibc) verwendet und erlaubt Linux Programmen die Verwendung von POSIX Threads (pthreads) … Deutsch Wikipedia

Native POSIX Thread Library — The Native POSIX Thread Library (NPTL) is a software feature that enables the Linux kernel to run programs written to use POSIX Threads efficiently. Contents 1 History 2 Design 3 See also 4 References … Wikipedia

GNU Portable Threads — Infobox Software name = GNU Portable Threads developer = Ralf S. Engelschall latest release version = 2.0.7 latest release date = 8 June 2006 operating system = UNIX genre = Runtime library license = LGPL website =… … Wikipedia

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

POSIX Threads

POSIX Threads

Communications protocol
Purposeпозволяет программе контролировать множество разных потоков, накладывающихся во время
Developer(s)POSIX.1c, Threads extensions (IEEE Std 1003.1c-1995)
Introduced1995 ; 26 years ago ( 1995 )
Based onC
InfluencedPOSIX 1003.1-2001

Содержание

Причины использования потоков

В традиционных операционных системах у каждого процесса есть адресное пространство и единственный поток управления. Фактически это почти что определение процесса. Тем не менее нередко возникают ситуации, когда неплохо было бы иметь в одном и том же адресном пространстве несколько потоков управления, выполняемых квазипараллельно, как будто они являются чуть ли не обособленными процессами (за исключением общего адресного пространства).

Основная причина использования потоков заключается в том, что во многих приложениях одновременно происходит несколько действий, часть которых может периодически быть заблокированной. Модель программирования упрощается за счет разделения такого приложения на несколько последовательных потоков, выполняемых в квазипараллельном режиме. Рассматривая потоки, мы добавляем новый элемент: возможность использования параллельными процессами единого адресного пространства и всех имеющихся данных. Эта возможность играет весьма важную роль для тех приложений, которым не подходит использование нескольких процессов (с их раздельными адресными пространствами).

Вторым аргументом в пользу потоков является легкость (то есть быстрота) их создания и ликвидации по сравнению с более «тяжеловесными» процессами. Во многих системах создание потоков осуществляется в 10–100 раз быстрее, чем создание процессов. Это свойство особенно пригодится, когда потребуется быстро и динамично изменять количество потоков. [Источник 1]

Третий аргумент в пользу потоков также касается производительности. Когда потоки работают в рамках одного центрального процессора, они не приносят никакого прироста производительности, но когда выполняются значительные вычисления, а также значительная часть времени тратится на ожидание ввода-вывода, наличие потоков позволяет этим действиям перекрываться по времени, ускоряя работу приложения.

И наконец, потоки весьма полезны для систем, имеющих несколько центральных процессоров, где есть реальная возможность параллельных вычислений.

Основные функции

В стандарте определено более 60 вызовов функций. Они могут быть разделены на 4 категории:

Опишем ряд самых основных функций, чтобы дать представление о том, как они работают.

Вызовы, связанные с потокомОписание
pthread_createСоздание нового потока
pthread_exitЗавершение работы вызвавшего потока
pthread_joinОжидание выхода из указанного потока
pthread_yieldОсвобождение центрального процессора, позволяющее

выполняться другому потоку

pthread_attr_initСоздание и инициализация структуры атрибутов потока
pthread_attr_destroyУдаление структуры атрибутов потока

Два следующих вызова функций, связанных с потоками, относятся к атрибутам. Функция pthread_attr_init создает структуру атрибутов, связанную с потоком, и инициализирует ее значениями по умолчанию. Эти значения (например, приоритет) могут быть изменены за счет работы с полями в структуре атрибутов.

И наконец, функция pthread_attr_destroy удаляет структуру атрибутов, принадлежащую потоку, освобождая память, которую она занимала. На поток, который использовал данную структуру, это не влияет, и он продолжает свое существование.

Чтобы лучше понять, как работают функции пакета Pthread, рассмотрим простой пример, показанный ниже. Основная программа этого примера работает в цикле столько раз, cколько указано в константе NUMBER_OF_THREADS (количество потоков), создавая при каждой итерации новый поток и предварительно сообщив о своих намерениях. Если создать поток не удастся, она выводит сообщение об ошибке и выполняет выход. После создания всех потоков осуществляется выход из основной программы. При создании поток выводит однострочное сообщение, объявляя о своем существовании, после чего осуществляет выход. Порядок, в котором выводятся различные сообщения, не определен и при нескольких запусках программы может быть разным.

Мьютексы в пакете Pthreads

pthread_mutex_initСоздание мьютекса
pthread_mutex_destroyУничтожение существующего мьютекса
pthread_mutex_lockОвладение блокировкой или блокирование потока
pthread_mutex_trylockОвладение блокировкой или выход с ошибкой
pthread_mutex_unlockРазблокирование

Условные переменные

Наиболее важные вызовы, связанные с условными переменными, показаны в таблице. В ней представлены вызовы, предназначенные для создания и уничтожения условных переменных.

Вызов из потокаОписание
pthread_cond_initСоздание условной переменной
pthread_cond_destroyУничтожение условной переменной
pthread_cond_waitБлокировка в ожидании сигнала
pthread_cond_signalСигнализирование другому потоку и его активизация
pthread_cond_broadcastСигнализирование нескольким потокам и активизация всех этих потоков

Условные переменные и мьютексы всегда используются вместе. Схема для одного потока состоит в блокировании мьютекса, а затем в ожидании на основе значения условной переменной, если поток не может получить то, что ему требуется. Со временем другой поток подаст ему сигнал, и он сможет продолжить работу. Вызов pthread_cond_wait осуществляется неделимо и выполняет разблокирование удерживаемого мьютекса как одну неделимую и непрерываемую операцию. По этой причине мьютекс является одним из его аргументов.

В качестве примера использования мьютексов и условных переменных в листинге ниже показана очень простая задача производителя-потребителя, в которой используется один единственный буфер. Когда производитель заполняет буфер, то перед тем как произвести следующую запись, он должен ждать, пока потребитель не опустошит этот буфер. Точно так же, когда потребитель извлечет запись, он должен ждать, пока производитель не произведет другую запись. При всей своей предельной простоте этот пример иллюстрирует работу основного механизма. Оператор, приостанавливающий работу потока, прежде чем продолжить его работу, должен убедиться в выполнении условия, поскольку поток может быть активирован в результате поступления сигнала UNIX или по другой причине.

Блокировка чтения-записи

Итак, в случае если нить пытается захватить блокировку на чтение и та не захвачена сейчас на запись (либо она свободна, либо уже захвачена на чтение) то захват ей удается и она продолжает свое выполнение, если же блокировка уже захвачена на запись то она ожидает ее освобождения. Если же нить хочет захватить блокировку на запись, то есть в эксклюзивном режиме, то она ожидает освобождения блокировки если та захвачена на чтение или на запись, и получает захват только если блокировка полностью свободна. Возникает вопрос кто получает блокировку если та освобождается и одновременно есть и ждущие писатели и ждущие читатели? Возможно, два варианта в случае если будет удовлетворена блокировка писателя, то можно говорить о предпочтении писателей, если же блокировку получат читатели, то можно говорить о предпочтении читателей. Оба варианта вполне разумны и полезны в разных ситуациях, первый, например, предпочтителен, в случае если мы хотим чтобы наши данные как можно скорее обновились и именно обновленными данными пользовались читатели, а второй удобен когда наша цель приоритетное обслуживание читателей а актуальность данных не так уж важна.

При этом согласно стандарту блокировка будет установлена, если нет активной блокировки по записи и нет нитей ожидающих возможности установки блокировки записи. В других случаях нить будет спать до появления возможности установить блокировку. Таким образом, блокировки чтения/записи предлагаемые стандартом это блокировки с предпочтением писателей, так как читатели всегда будут стараться уступать им дорогу. Установить блокировку записи можно при помощи функции:

Эта функция как и следует ожидать устанавливает блокировку записи в случае, если для данного (блокировка чтения/записи) не установлено никаких других блокировок, в остальных случаях вызвавшая ее нить будет ожидать освобождения блокировки. Нить может снять любую установленную ею ранее блокировку при помощи функции:

При этом, поскольку в данный момент времени для данной блокировки чтения/записи данная нить может обладать либо только правом чтения, либо правом записи, то при снятии блокировки всегда известно, какого именно типа блокировку мы сейчас снимаем, и соответственно эта функция не нуждается в вариантах. И, наконец, как и в случае мьютекса ресурсы занимаемые свободной блокировкой чтения/записи могут быть освобождены при помощи функции:

Барьеры

Где последний параметр count задает число нитей, которые должны дойти до барьера (вызвать функцию pthread_barrier_wait ) прежде чем они смогут продолжить выполнение. Раз существует функция инициализирующая барьер, то существует и комплиментарная функция которая уничтожает его:

Как и в случае остальных примитивов синхронизации данная функция должна вызываться только в случае если на уничтожаемом барьере не ожидает ни одной нити. Ну и наконец существует функция вызов которой собственно и соответствует преодолению барьера:

Спинлок

Третий примитив синхронизации, про который хотелось бы поговорить это spin lock(спинлок). С точки зрения функциональности этот примитив ничем не отличается от мьютекса. Основная стоящая за ними идея состоит в том, чтобы вместо того чтобы заблокировать нить в случае если блокировка уже захвачена, крутиться, проверяя не освободилась ли блокировка (отсюда и слово spin в названии). Фактически спинлок это мьютекс основанный на использовании активного ожидания. Какой тогда смысл в таком примитиве? В случае если мы имеем мультипроцессор (так как на однопроцессорной машине спинлок будет бесполезно съедать циклы процессора до тех пор, пока не произойдет переключение на другую владеющую блокировкой нить) и крайне малый размер критической секции защищаемой этим примитивом (чтобы опять же не ждать долго и снизить опасность переключения на другую нить) спинлок может быть использован эффективнее чем мьютекс. Это обусловлено тем что он не вызывает долгой операции перевода нити в сон, вообще считается что spin lock реализуется на основе самых быстрых механизмов синхронизации доступных в системе. В случае если какое-либо из двух вышеприведенных условий нарушается, спинлок не даст выигрыша в производительности и выгоднее воспользоваться мьютексом. Согласно стандарту данный примитив представляется при помощи типа pthread_spinlock_t и набора операций над ним, которые практически совпадают с соответствующими операциями для мьютекса:

Заключение

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

Источник

Pthreads: Потоки в русле POSIX

Современные операционные системы и микропроцессоры уже давно поддерживает многозадачность и вместе с тем, каждая из этих задач может выполняться в несколько потоков. Это дает ощутимый прирост производительности вычислений и позволяет лучше масштабировать пользовательские приложения и сервера, но за это приходится платить цену — усложняется разработка программы и ее отладка.

Posix win threads for windows что это

В этой статье мы познакомимся с POSIX Threads для того, чтобы затем узнать как это все работает в Linux. Не заходя в дебри синхронизации и сигналов, рассмотрим основные элементы Pthreads. Итак, под капотом потоки.

Общие сведения

Posix win threads for windows что это

У всех исполняемых процессов есть как минимум один поток исполнения. Некоторые процессы этим и ограничиваются в тех случаях, когда дополнительные нити исполнения не дают прироста производительности, но только усложняют программу. Однако таких программ с каждым днем становится относительно меньше.

В чем польза множественных потоков исполнения? Возьмем какой-нибудь загруженный веб сервер, например habrahabr.ru. Если бы сервер создавал отдельный процесс для обслуживания каждого http запроса, мы бы ожидали вечно пока загрузится наша страница. Создания нового процесса — дорогостоящее удовольствие для ОС. Даже учитывая оптимизацию за счет копирования при записи, системные вызовы fork и exec создают новые копии страниц памяти и списка файловых описателей. В целом ядро ОС может создать новый поток на порядок быстрее, чем новый процесс.

Posix win threads for windows что это

Таблицы страниц до и после изменения общей страницы памяти во время копирования при записи.

Posix win threads for windows что это

Существует закономерность между количеством параллельных нитей исполнения процесса, алгоритмом программы и ростом производительности. Это зависимость называется Законом Амдаля.

Закон Амдаля для распараллеливания процессов.

Posix win threads for windows что это

Используя уравнение, показанное на рисунке, можно вычислить максимальное улучшение производительности системы, использующей N процессоров и фактор F, который указывает, какая часть системы не может быть распараллелена. Например 75% кода запускается параллельно, а 25% — последовательно. В таком случае на двухядерном процессоре будет достигнуто 1.6 кратное ускорение программы, на четырехядерном процессоре — 2.28571 кратное, а предельное значение ускорения при N стремящемся к бесконечности равно 4.

Отображение потоков в режим ядра

Практически все современные ОС — включая Windows, Linux, Mac OS X, и Solaris — поддерживают управление потоками в режиме ядра. Однако потоки могут быть созданы не только в режиме ядра, но и в режиме пользователя. При использовании этого уровня ядро не знает о существовании потоков — все управление потоками реализуется приложением с помощью специальных библиотек. Пользовательские потоки по разному отображаются на потоки в режиме ядра. Всего существует три модели, из которых 1:1 является наиболее часто используемой.

Отображение N:1

В данной модели несколько пользовательских потоков отображаются на один поток ядра ОС. Все управление потоками осуществляет особая пользовательская библиотека, и в этом преимущество такого подхода. Недостаток же в том, что если один единственный поток выполняет блокирующий вызов, то тогда тормозится весь процесс. Предыдущие версии Solaris OS использовали такую модель, но затем вынуждены были от нее отказаться.

Posix win threads for windows что это

Отображение 1:1

Это самая проста модель, в которой каждый поток созданный в каком-нибудь процессе непосредственно управляется планировщиком ядра ОС и отображается на один единственный поток в режиме ядра. Чтобы приложение не плодило бесконтрольно потоки, перегружая ОС, вводят ограничение на максимальное количество потоков поддерживаемых в ОС. Данный способ отображения потоков поддерживают ОС Linux и Windows.

Posix win threads for windows что это

Отображение M:N

При таком подходе M пользовательских потоков мультиплексируются в такое же или меньшее N количество потоков ядра. Преодолеваются негативные эффекты двух других моделей: нити по-настоящему исполняются параллельно и нет необходимости в ОС вводить ограничения на их общее количество. Вместе с тем данную модель довольно трудно реализовать с точки зрения программирования.

Posix win threads for windows что это

Потоки POSIX

В конце 1980-х и начале 1990-х было несколько разных API, но в 1995 г. POSIX.1c стандартизовал потоки POSIX, позже это стало частью спецификаций SUSv3. В наше время многоядерные процессоры проникли даже в настольные ПК и смартфоны, так что у большинства машин есть низкоуровневая аппаратная поддержка, позволяющая им одновременно выполнять несколько потоков. В былые времена одновременное исполнение потоков на одноядерных ЦПУ было лишь впечатляюще изобретательной, но очень эффективной иллюзией.

Pthreads определяет набор типов и функций на Си.

Из man errno
Переменная errno определена в стандарте ISO C как изменяемое lvalue int и не объявляемая явно; errno может быть и макросом. Переменная errno является локальным значением нити; её изменение в одной нити не влияет на её значение в другой нити.

Создание потока

При удачном завершении pthread_create() возвращает код 0, ненулевое значение сигнализирует об ошибке.

Рассмотрим теперь пример многопоточной программы.

Завершение потока

Поток завершает выполнение задачи когда:

Синтаксис проще, чем при создании потока.

Ожидание потока

При удачном завершении pthread_join() возвращает код 0, ненулевое значение сигнализирует об ошибке.

Досрочное завершение потока

При удачном завершении pthread_cancel() возвращает код 0, ненулевое значение сигнализирует об ошибке.

Небольшая иллюстрация создания и отмены потока.

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

Posix win threads for windows что это

Отсоединение потока

При удачном завершении pthread_detach() возвращает код 0, ненулевое значение сигнализирует об ошибке.

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

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

В начальной части статьи мы уже указывали на эти преимущество, поэтому вкратце их просто перечислим.

Теперь немного о недостатках.

Тема потоков практически бездонна, даже основы работы с потоками может потянуть на пару лекций, но мы уже знаем достаточно, чтобы изучить структуру многопоточных приложений в Linux.

Источник

Posix win threads for windows что это

Профиль
Группа: Участник
Сообщений: 44
Регистрация: 6.2.2009

Репутация: нет
Всего: нет

И так в бою за титул чемпиона участвует два соперника
Win32Api(будем его так кликать):
OS: Windows NT/95/98/me/2000/xp/vista/seven/ce(может не в той последовательности)

POSIX:
OS: Unix/Linux(many)/Mac OS/QNX/(слышал про реализацию под Windows NT/95/98/me/2000/xp/vista/seven/ce правда уже не в комплекте).

Let’s Begin(Давайте начнем)

1)Round «Mutual blocking(взаимо блокировка)»:

Win32Api представляет CRITICAL_SECTION и и Mutex.
POSIX уверенно говорит о Mutex.

Win32Api:
CRITICAL_SECTION
InitializeCriticalSection();
EnterCriticalSection();
TryEnterCritticalSection();
LeaveCriticalSection();
DeleteCriticalSection();

Просты в использовании, выходят в режим ядра когда это действительно нужно. Из минусов можно сказать большой расход памяти(из-за структуры).
Требуют обработку исключений(по крайней мере InitializeCriticalSection,
а если я использую С, __try __catch __finally вообщем расклад то не очень)
-Распростроняются только на один процесс(хотя при желании можно и изменить, мы ведь знаем что в структуре есть handle семафора, но
наверное не стоит)
Mutex:
CreateMutex();
OpenMutex();
WaitForSingleObject();
WaitForMultiObjects();
ReleaseMutex();
CloseHandle();

Mutex:
pthread_mutex_init();
pthread_mutex_lock();
pthread_mutex_trylock();
pthread_mutex_unlock();
pthread_mutex_destroy();

Открытая структура, выходят в режим ядра когда это действительно нужно. Распростроняются только на один процесс. Нет возможности ожидания
больше одного mutexю
Кто победил? Трудновато сказать. Тут все завист от то кто что ожидает при использовании «Mutual blocking(взаимо блокировка)». Лично мое мнение это Win32Api.

2)Round «Semaphore»:
Win32Api:
CreateSemaphore();
WaitForSingleObject();
WaitForMultiObjects();
ReleaseSemaphore();
CloseHandle();

В принципе все приимущества что и у Mutex. Не стоит думать как был создан(или же был открыт) семафор при уничтожении. Пожалуй не удобно при открытии
делать дубликацию HANDL.
Posix:
sem_init();
sem_wait();
sem_post();
sem_trywait();
sem_getvalue();
sem_destory();
sem_open();
sem_close();
sem_unlink();
Надо помнить как все же был создан(или был открыт) семафор при уничтожении. Приимучество можно получить счетчик, и есть try wait.

Думаю здесь честно победу можно отдать Win32Api.
Так что счет 2:0

3)Round «Atomic operation or Interlocked(Атомарные операции или Interlocked(мне не нравится перевод))»

Win32Api:
InterlockedDecrement();
InterlockedIncrement();
InterlockedAdd();
Ну и в таком духе.
Приимуществ нет. Не достаток вызывают DLL, соответственно заинлайнится не смогут(может есть какаета другая реализация?).

Posix(не слышал так что воспользуемся linux):
atomic_add();
atomic_sub();
atomic_inc();
atomic_dec();

Инлайнятся.
Говорить о assembler думаю не стоит, но если говорить то легче реализовывать под винду.
Раунд за Linux;
Так что счет 2:1.

4)Round «Thread local storage»

Win32Api:
TlsAlloc();
TlsSetValue();
TlsGetValue();
TlsFree();
Без коментариев.
Posix:
pthread_create_key();
pthread_setspecific();
pthread_getspecific();
pthread_delete_key();
Без коментариев.

В это раунде нечья.

Я бы сказал не чего особого. Только вот не понятно как уничтожать.
Posix:
pthread_cond_init()
pthread_cond_wait();
pthread_cond_timedwait();
pthread_cond_signal();
pthread_cond_broadcast();
pthread_cond_destroy();

Функция с ожиданием по времени.
Так что Posix +1;

Win32Api не имеет барьеров. Создание управление потоками не лучше чем у POSIX, CreateThread/_beginthread/_beginthreadEx по мне менее удобны чем pthread_create,
Хотя бы по тому что параметров не надо столько передавать. Здесь я не писал о spin блокировках, read_write lock, в Win32Api это только в
vista/server2008. Стоит отметить OpenMP но это принадлежит visual studio.

Я не селен в многопоточности, просто по изучать хотелось, так что любые замечание по теме буду только рад.

Серийный программист
Posix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что это

Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44

Цитата(0xDX @ 6.3.2009, 04:13)
Стоит отметить OpenMP но это принадлежит visual studio.

ЗЫ для чего вообще это сравнение? что оно дало?

Эксперт
Posix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что это

Профиль
Группа: Комодератор
Сообщений: 7036
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 60
Всего: 223

Так что счет будет явно не в пользу posix.

Серийный программист
Posix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что это

Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44

xvr, но хоть это не очень хорошо, но всеже все это можно реализовать» используя то что есть.

Эксперт
Posix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что это

Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154

Цитата(0xDX @ 6.3.2009, 07:13 Posix win threads for windows что это)
Хотя бы по тому что параметров не надо столько передавать. Здесь я не писал о spin блокировках, read_write lock, в Win32Api это только в
vista/server2008.

Эксперт
Posix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что это

Профиль
Группа: Комодератор
Сообщений: 7036
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 60
Всего: 223

Цитата(chaos @ 6.3.2009, 14:54)
xvr, но хоть это не очень хорошо, но всеже все это можно реализовать» используя то что есть.

Профиль
Группа: Участник
Сообщений: 44
Регистрация: 6.2.2009

Репутация: нет
Всего: нет

Спорный вопрос. Сколько *handle как проверить sizeof()? сколько я памяти использую?

Цитата
Далее, все серия Interlocked* в Win32API инлайнится компилятором, никаких dll не нужно (конечно, если программист не приложит больших усилий, что бы этого не было smile )

и как их сделать инлайн?

Цитата
В posix нет возможности ждать сразу на нескольких разных синхронизирующих примитивах.

Я не думаю что это функциональноть дают право на победу, это легко реализуется, но пожалуй встроенное все таки элегантнее.

Эксперт
Posix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что этоPosix win threads for windows что это

Профиль
Группа: Комодератор
Сообщений: 7036
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 60
Всего: 223

Спорный вопрос. Сколько *handle как проверить sizeof()? сколько я памяти использую?

Цитата
Далее, все серия Interlocked* в Win32API инлайнится компилятором, никаких dll не нужно (конечно, если программист не приложит больших усилий, что бы этого не было smile )

Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это Posix win threads for windows что это

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »

[ Время генерации скрипта: 0.1424 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Видео

Процессы. Способы создания WinAPI и POSIX процессов.

Процессы. Способы создания WinAPI и POSIX процессов.

АКОС. Семинар 23. Многопоточность POSIX Threads

АКОС. Семинар 23. Многопоточность POSIX Threads

Стандарт POSIX

Стандарт POSIX

МНОГОПОТОЧНОСТЬ - C++ WINAPI ЧАСТЬ #10

МНОГОПОТОЧНОСТЬ  -  C++ WINAPI ЧАСТЬ #10

Многопоточность | Потоки | thread | Многопоточное программирование | Уроки | C++ #1

Многопоточность | Потоки | thread | Многопоточное программирование | Уроки | C++ #1

"Опыт 6" с ОС Minix. Создание и взаимодействие процессов: POSIX vs WINAPI

"Опыт 6" с ОС Minix. Создание и взаимодействие процессов: POSIX vs WINAPI

Внимание! Вирус халявщика. Компьютерный вирус! Как удалить вирус?

Внимание! Вирус халявщика. Компьютерный вирус! Как удалить вирус?

mingw-w64 threads: posix vs win32

mingw-w64 threads: posix vs win32

📼 Процессы и потоки (Win32 API).

📼 Процессы и потоки (Win32 API).

Work with Posix thread

Work with Posix thread
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.