Многозадачность средствами WinApi() ФУНКЦИИ
Primary tabs
Forums:
Рассмотрим функции win api , которые помогут нам написать простенькую программку использующую два потока в рамках одного процесса - главный и дополнительный .
для создания нового процесса в винде используют функцию (http://vsokovikov.narod.ru/New_MSDN_API/...) =
BOOL CreateProcess( LPCTSTR lpApplicationName , /* имя исполняемого модуля */ LPTSTR lpCommandLine, /* командная строка - если имя исполняемого модуля NULL - то первое слово (то что до первого пробела) в передаваемой строке считается именем запускаемого файла */ LPSECURITY_ATTRIBUTES lpProcessAttributes , /*/ SD (дескриптор безопасности) для процесса*/ LPSECURITY_ATTRIBUTES lpThreadAttributes, /* SD (дескриптор безопасности) для процесса для потока*/ BOOL bInheritHandles, /* дескриптор параметра наследования */ DWORD dwCreationFlags, /* флажки создания - комбинация флагов создания процесса*/ LPVOID lpEnvironment, /* новый блок конфигурации*/ LPCTSTR lpCurrentDirectory, /* имя текущего каталога*/ LPSTARTUPINFO lpStartupInfo, /* информация предустановки*/ LPPROCESS_INFORMATION lpProcessInformation /* информация о процессе*/ );
создание потока (нити)(http://vsokovikov.narod.ru/New_MSDN_API/...)=
HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, /*// дескриптор защиты*/ SIZE_T dwStackSize, /*// начальный размер стека*/ LPTHREAD_START_ROUTINE lpStartAddress, /*сюда передаём указатель на функцию , чей код будет исполняться в рамках новой нити(=потока) причём эта функция должна иметь вид DWORD WINAPI ThreadFunction(LPVOID lpParameter);*/ LPVOID lpParameter, /* // параметр потока - см. комментарии к предыдущему аргументу, данный параметр будет передан в функцию предыдущего аргумента DWORD WINAPI ThreadFunction(LPVOID lpParameter); */ DWORD dwCreationFlags, /* // опции создания*/ LPDWORD lpThreadId /* // идентификатор потока*/ );
пример создания нового потока (нити) си для windows
далее рассмотрим вопрос синхронизации потоков.
- Log in to post comments
- 5782 reads
vedro-compota
Sun, 10/23/2011 - 19:54
Permalink
синхронизация с помощью семафоров
читать про семафор = http://ru.wikipedia.org/wiki/%D0%A1%D0%B...
Семафор - про принципу действия основан на поднятии или спуске флага - то есть посмотрев на эту структуру процесс может понять - занят ли общий ресурс (память , файл) или что-либо иное - этот флаг показывает доступность ресурса
_____________
матфак вгу и остальная классика =)