Составители:
критического раздела, а о его инициализации. Процесс не ожидает критический раздел, а
входит в него, и не освобождает критический раздел, а покидает его; к тому же вы не
закрываете дескриптор, а удаляете объект.
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
Страницы
- « первая
- ‹ предыдущая
- …
- 72
- 73
- 74
- 75
- 76
- …
- следующая ›
- последняя »
