powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Про потоки...
3 сообщений из 3, страница 1 из 1
Про потоки...
    #32829621
anterior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как мне сделать так: Пусть пользователь щелкает по какому-либо элементу дерева (CTreeView), запускается поток который что-либо добавляет в список (CListBox). Если пользователь щелкнул по другому элементу файлового дерева и предыдущий поток ещё не завершился то ему(предыдущему) нужно послать сигнал о том что пора завершатся, и ждать пока посланный сигнал не обработается и не придет сигнал о том что поток действительно завершился. Я хотел решить эту задачу таким способом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
// Функция потока которая что-то делает:
do 
{
<...>
} 
while (!ThreadStopped)
// ThreadStopped будет булевой переменной которая если имеет истинное значение то значит что потоку пора завершаться.
//А завершать поток я буду так(это уже в обработчике щелчка на элемент CTreeView):
ThreadStopped = true;
while (WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0) // дождаться пока поток не освободится
{
	//Если освободился тогда создать новый
}
Но этот механизм у меня не работает, незнаю почему. Наверное я не так понял предназначение функции WaitForSingleObject . Предложите свой выход решения моей проблемы.
...
Рейтинг: 0 / 0
Про потоки...
    #32829760
Siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WaitForSingleObject на вход принимает элементы предназначенные для синхронизации: семафоры(semaphore) мутехи(mutex) и прочие...

Как ими пользоваться, надо тебе почитать в msdn
Общий смысл такой:
семафор это такая фигня со счётчиком состояний, если счётчик не 0, то
WaitForSingleObject на нём будет стоять пока он не обнулится или таймаут не пройдёт. Это полезно, когда надо ждать нескольких, которые релизят семафор.
К примеру, работают три потока, четвёртый ставить счётчик:3 и ждёт, пока каждый из трёх прорелизит.

Мутехи проще. Мутех эта такая фигня, обладать которой в данных момент может тока один поток. Это как туалет, кто первый добежал, тот закрылся и пока он оттуда не выйдет, другой будет стоять под дверью:WaitForSingleObject.
Причём именованый мутех - один на всю машину (один туалет на всю многоэтажку) и второй такой в рамках одной машины не создать.
...
Рейтинг: 0 / 0
Про потоки...
    #32829765
Sie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sie
Гость
Кстати, может буква М на туалетах как раз означает Mutex? :)

Пойду в анекдоты напишу...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Про потоки...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]