Информация об изменениях

Сообщение Re: Работа с потоками (threads) в MFC от 22.12.2016 18:07

Изменено 23.12.2016 5:30 AlexGin

Здравствуйте, RussianFellow, Вы писали:

RF>Не подскажете ли, уважаемые коллеги, как лучше всего работать с потоками (threads) в MFC?

_beginthreadex — в MSDN смотрим;
На крайний случай — AfxBeginThread (смотрим там же)

RF>Есть функция, производящая математические вычисления. Эта функция большая по длине и её действия происходят в цикле до выполнения некоего условия. Эта функция работает в консольном режиме--ввод и вывод данных там происходит с помощью консольного окна.

Условие — контролируем вызовом WinAPI-шной ::WaitForSingleObject
ну или же ::WaitForMultipleObjects — здесь зависит от того, имеется одно условие выхода из цикла или несколько.

RF>Как лучше поместить эту функцию в поток--использовать класс CWinThread, воспользоваться функцией AfxBeginThread или же использовать функции WinAPI для работы с потоками?

Правильнее всего — НЕ завязываться на CWinThread (избыточен он для данной задачи), вызывать _beginthreadex либо AfxBeginThread.
ВАЖНО: и в том и в другом случае "функция, производящая математические вычисления" должна быть глобальной или же статической,
если эта функция — просто метод класа, то данное решение работать НЕ БУДЕТ!
Re: Работа с потоками (threads) в MFC
Здравствуйте, RussianFellow, Вы писали:

RF>Не подскажете ли, уважаемые коллеги, как лучше всего работать с потоками (threads) в MFC?

_beginthreadex — в MSDN смотрим;
На крайний случай — AfxBeginThread (смотрим там же)

RF>Есть функция, производящая математические вычисления. Эта функция большая по длине и её действия происходят в цикле до выполнения некоего условия. Эта функция работает в консольном режиме--ввод и вывод данных там происходит с помощью консольного окна.

Условие — контролируем вызовом WinAPI-шной ::WaitForSingleObject
ну или же ::WaitForMultipleObjects — здесь зависит от того, имеется одно условие выхода из цикла или несколько.

RF>Как лучше поместить эту функцию в поток--использовать класс CWinThread, воспользоваться функцией AfxBeginThread или же использовать функции WinAPI для работы с потоками?

Правильнее всего — НЕ завязываться на CWinThread (избыточен он для данной задачи), вызывать _beginthreadex либо AfxBeginThread.
ВАЖНО: и в том и в другом случае "функция, производящая математические вычисления" должна быть глобальной или же статической,
если эта функция — просто метод класса, то данное решение работать НЕ БУДЕТ!