Операционные системы. Учебное пособие. Марапулец Ю.В. - 74 стр.

UptoLike

Составители: 

критического раздела, а о его инициализации. Процесс не ожидает критический раздел, а
входит в него, и не освобождает критический раздел, а покидает его; к тому же вы не
закрываете дескриптор, а удаляете объект.
VOID InitializeCriticalSection ( LPCRITICAL_SECTION lpcs );
VOID EnterCriticalSection( LPCRITICAL_SECTION lpcs );
VOID LeaveCriticalSection( LPCRITICAL_SECTION lpcs );
VOID DeleteCriticalSection( LPCRlTICAL_SECTION lpcs );
Переменная типа LPCRITICAL_SECTION содержит указатель (а не дескриптор)
критического раздела. Функция InitializeCriticalSection должна получить указатель на
пустой объект (&cs), который можно создать следующим образом:
CRITICAL SECTION cs;
2.2.4. Использование классов MFC для создания потоков
Способ создания потоков с помощью функций библиотеки MFC, заключается в
создании класса, порожденного от класса CWinThread. Схема этого процесса выглядит
следующим образом:
// Класс CThreadExample
IMPLEMENT_DYNCREATE(CThreadExample, CWinThread)
CThreadExample::CThreadExample()
{
// инициализация переменных-членов класса
}
CThreadExample::~CThreadExample()
{
}
BOOL CThreadExample::InitInstance()
{
// TODO: здесь следует выполнить инициализацию потока
//здесь должны выполняться операции инициализации,
//не связанные с переменными, например создание
// экземпляров других объектов класса
return TRUE;
}
int CThreadExample::ExitInstance()
{
// TODO: здесь выполняются все операции очистки для потока
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CThreadExample, CWinThread)
//{{AFX_MSG_MAP(CThreadExample)
76
критического раздела, а о его инициализации. Процесс не ожидает критический раздел, а
входит в него, и не освобождает критический раздел, а покидает его; к тому же вы не
закрываете дескриптор, а удаляете объект.

VOID InitializeCriticalSection ( LPCRITICAL_SECTION lpcs );
VOID EnterCriticalSection( LPCRITICAL_SECTION lpcs );
VOID LeaveCriticalSection( LPCRITICAL_SECTION lpcs );
VOID DeleteCriticalSection( LPCRlTICAL_SECTION lpcs );

     Переменная типа LPCRITICAL_SECTION содержит указатель (а не дескриптор)
критического раздела. Функция InitializeCriticalSection должна получить указатель на
пустой объект (&cs), который можно создать следующим образом:
CRITICAL SECTION cs;

     2.2.4. Использование классов MFC для создания потоков

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

// Класс CThreadExample
IMPLEMENT_DYNCREATE(CThreadExample, CWinThread)

CThreadExample::CThreadExample()
{
      …                       // инициализация переменных-членов класса
}

CThreadExample::~CThreadExample()
{
}

BOOL CThreadExample::InitInstance()
{
       // TODO: здесь следует выполнить инициализацию потока
       …
       //здесь должны выполняться операции инициализации,
       //не связанные с переменными, например создание
       // экземпляров других объектов класса
       return TRUE;
}
int CThreadExample::ExitInstance()
{
       // TODO: здесь выполняются все операции очистки для потока
       …
       return CWinThread::ExitInstance();
}

BEGIN_MESSAGE_MAP(CThreadExample, CWinThread)

      //{{AFX_MSG_MAP(CThreadExample)


                                         76