Документ, связанный с активным представлением 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Документ, связанный с активным представлением

Поиск

1. Активное представление

2. Документ, связанный с активным представлением

3. Дочерний фрейм, содержащий активное представление

4. Главный фрейм

5. Приложение

 

Создание потоков и простейшая синхронизация

 

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

 

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

 

Например, предположим что одна из функций-обработчиков сообщений окажется «жадной» и займет 10 секунд процессорного времени. Благодаря вытесняющей многозадачности в Win32 другие приложения все это время будут продолжать работать, отнимая процессор у «жадной» функции время от времени. Однако, поток, содержащий данную функцию в течении 10 секунд не будет обрабатывать никакие сообщения, т.к. DispatchMessage не возвращает управление до тех пор, пока его не возвратит «жадный» обработчик. Данную проблему можно разрешить, запустив «жадную» функцию в отдельном потоке.

 

Функция потока и связь с ней

 

В Win32 бывают потоки двух видов: потоки пользовательского интерфейса (у которых есть свой цикл обработки сообщений) и рабочие потоки (у которых этого цикла нет). Мы создадим рабочий поток (без обработки событий).

 

Для нового потока нужно написать глобальную функцию, которая принимает в качестве параметра одно 32-разрядное значение, объявленное как LPVOID, и при запуске через этот параметр можно передать указатель на все, что угодно. Возвращать функция обязана значение типа UINT, но мы им не будем пользоваться. Поток завершится, когда глобальная функция вызовет return. Чтобы запустить поток нужно вызвать функцию MFC, имеющую следующий вид(в действительности имеется еще 4 параметра, которые мы принимаем по умолчанию):

CWinThread* AfxBeginThread(



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 46; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.)