Использование потоков
Функция CreateThread создает либо RTSS, либо Win32 поток, в зависимости от текущей исполняющей подсистемы процесса. Возвращаемый хэндл и ID потока действителен только в окружении, вызвавшем CreateThread. Например, Win32 процесс не может управлять приоритетом RTSS потока, потому что хэндл этого потока действителен только в RTSS подсистеме. Вы можете, однако, использовать средства межпроцессного взаимодействия (Inter-Process Communication,IPC), предоставляемые RTX – такие как mutex, semaphore, events и shared memory – для синхронизации и коммуникации между Win32 и RTSS процессами и потоками. См. раздел “Межпроцессное взаимодействие”.
Объекты таймеры и прерывания
Объекты-таймеры и прерывания происходят от потоков, следовательно, хэндлы этих объектов действительны только в их собственной (Win32 или RTSS) среде. Аналогично, этими объектами можно управлять только из процессов в их собственной среде.
RTSS подсистема
Единицей исполнения в подсистеме RTSS является поток. Готовый к исполнению RTSS-поток получает приоритет над всеми Win32 потоками. RTSS-поток исполняется до тех пор, пока он не освободит CPU. Поток освобождает CPU, когда он:
- Ожидает объекта синхронизации
- Понижает собственный приоритет или повышает приоритет другого потока
- Подвешивает (suspend) себя
- Возвращается из процедуры обработки таймера или прерывания (относится только к потокам таймера и прерывания)
- Вызывает функцию Sleep c аргументом 0
RTSS-потоки не могут быть использованы как объекты синхронизации. Первичный поток процесса имеет стек размером 8 KB. Можно указать размер стека созданных впоследствии потоков с помощью функции CreateThread.