— Каким образом можно получить хэндл текущего потока, чтобы потом сделать SuspendThread и ResumeThread к нему из другого? Получить при помощи _beginthread не могу, т.к. это основной поток, начинающийся ещё с функции main ().
— Что такое _threadid? Я думал, что это абсолютно такое же значение, как хэндл текущего потока.
Здравствуйте, YourLastSong, Вы писали:
YLS>- Каким образом можно получить хэндл текущего потока, чтобы потом сделать SuspendThread и ResumeThread к нему из другого? Получить при помощи _beginthread не могу, т.к. это основной поток, начинающийся ещё с функции main ().
А можно встречный вопрос? Зачем вам понадобилось вручную ставить поток на паузу?
Здравствуйте, YourLastSong, Вы писали:
Pzz>>А можно встречный вопрос? Зачем вам понадобилось вручную ставить поток на паузу?
YLS>А что такое? Это так плохо?
Здравствуйте, YourLastSong, Вы писали:
Pzz>>А зачем?
YLS>Предлагаете ожидать вкл. какого-то опр. флага или события? Можно и события вкл., и флаги, вопрос главное решить.
Вы пытаетсь обсуждать средства решения проблемы, не формулируя самой проблемы. Вы какую проблему-то собираетесь решить?
Здравствуйте, YourLastSong, Вы писали:
YLS>- Каким образом можно получить хэндл текущего потока, чтобы потом сделать SuspendThread и ResumeThread к нему из другого?
Здравствуйте, Went, Вы писали:
W>Здравствуйте, YourLastSong, Вы писали:
YLS>>- Каким образом можно получить хэндл текущего потока, чтобы потом сделать SuspendThread и ResumeThread к нему из другого?
W>здесь
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, YourLastSong, Вы писали:
YLS>>- Каким образом можно получить хэндл текущего потока, чтобы потом сделать SuspendThread и ResumeThread к нему из другого? Получить при помощи _beginthread не могу, т.к. это основной поток, начинающийся ещё с функции main ().
Pzz>А можно встречный вопрос? Зачем вам понадобилось вручную ставить поток на паузу?
Здравствуйте, YourLastSong, Вы писали:
Pzz>>Вы пытаетсь обсуждать средства решения проблемы, не формулируя самой проблемы. Вы какую проблему-то собираетесь решить?
YLS>Мне надо временно остановить основной поток, пока не завершится тот поток, который пытается это сделать.
В основном потоке вызвать WaitForSingleObject(хендл_того_другого_потока, INFINITE); там, где это можно вызвать.
_____________________
С уважением,
Stanislav V. Zudin
Pzz>>А можно встречный вопрос? Зачем вам понадобилось вручную ставить поток на паузу? YLS>А что такое? Это так плохо?
в over 99.9% случаев, когда это пытаются сделать люди, которые не знают разницы между id и хэндлом — это очень плохо
Как много веселых ребят, и все делают велосипед...
Здравствуйте, YourLastSong, Вы писали:
YLS>Мне надо временно остановить основной поток, пока не завершится тот поток, который пытается это сделать.
Во-первых, использовать SuspendThread для этого — все равно что забивать гвозди микроскопом, и вообще без SuspendThread лучше обходиться так же как без goto. Достаточно WaitForSingleObject на событии взводимом из "того потока" по окончании работы.
Во-вторых, немного подробнее бы о необходимости остановки основного потока?
Здравствуйте, YourLastSong, Вы писали:
Pzz>>Вы пытаетсь обсуждать средства решения проблемы, не формулируя самой проблемы. Вы какую проблему-то собираетесь решить?
YLS>Мне надо временно остановить основной поток, пока не завершится тот поток, который пытается это сделать.
Ну, например, это можно сделать следующим образом:
1) создаете семафор: handle = CreateSemaphore(...);
2) запускаете "тот поток, который пытается это сделать" (хотел бы я знать, что такое "это")
3) Основной поток ставит себя в ожидание на семафоре: WaitForSingleObject(handle,INFINITE)
4) "тот поток" делает "это"
5) сделав "это", поток сигнализирует семафор: ReleaseSemaphore(handle,1,NULL), после чего завершается, уходит на пенсию или я не знаю чего
6) основной поток просыпается, выходит из WaitForSingleObject(), и идет заниматься чем-нибудь полезным