Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как удалить поток? 
V
    Опции темы
Graf_h
Дата 3.6.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



Здравствуйте. Создаю поток CreateThreed(...), как его убить. WaitForSingleObject не использую, просто создаю поток, он мне нужен для загрузки ресурсов. По идее он должен сам убится, когда функция возвращает 0, но у меня он и дальше висит:(


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
mrbrooks
Дата 3.6.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(Graf_h @  3.6.2009,  18:28 Найти цитируемый пост)
Создаю поток CreateThreed(...)

в Windows лучше использовать beginthreadex/endthreadex


Цитата(Graf_h @  3.6.2009,  18:28 Найти цитируемый пост)
WaitForSingleObject не использую

совершенно напрасно батенька. smile достаточно дельный и простой способ проконтролировать жизнедеятельность потока.
PM MAIL   Вверх
jonie
Дата 3.6.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



Цитата
По идее он должен сам убится, когда функция возвращает 0, но у меня он и дальше висит:(

это вы как определили? Диспетчер потоков убъет его когда будет время....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
bugmenot
Дата 3.6.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 3.7.2006

Репутация: 0
Всего: 1



HANDLE закрываешь?
Можно прям так:
CloseHandle(CreateThreed(...));

smile
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
mrbrooks
Дата 4.6.2009, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(bugmenot @  3.6.2009,  19:48 Найти цитируемый пост)
HANDLE закрываешь?
Можно прям так:
CloseHandle(CreateThreed(...));


это только обнуляет описатель, после чего его нельзя использовать, однако это не значит, что сам поток уничтожен. 

По классике:
Цитата

Поток можно завершить четырьмя способами: 
функция потока возвращает управление (рекомендуемый способ), 
поток самоуничтожается вызовом функции ExitThread (нежелательный способ); 
один из потоков данного или стороннего процесса вызывает функцию TerminateThread (нежелательный способ); 
завершается процесс, содержащий данный поток (тоже нежелательно). 



PM MAIL   Вверх
Graf_h
Дата 4.6.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



Цитата(mrbrooks @  4.6.2009,  07:58 Найти цитируемый пост)

Цитата(Graf_h @  3.6.2009,  18:28 )
WaitForSingleObject не использую
совершенно напрасно батенька.  достаточно дельный и простой способ проконтролировать жизнедеятельность потока.
 Почему напрасно? в моем случае поток должен отработать и убитсяsmile(я так думаю). Мне он нужен только один оаз.

mrbrooks, 
Цитата(mrbrooks @  4.6.2009,  07:58 Найти цитируемый пост)
функция потока возвращает управление (рекомендуемый способ), 
, тоесть return 0??

Это сообщение отредактировал(а) Graf_h - 4.6.2009, 11:21


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
mrbrooks
Дата 4.6.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(Graf_h @  4.6.2009,  11:18 Найти цитируемый пост)
Почему напрасно? в моем случае поток должен отработать и убитсяsmile(я так думаю). Мне он нужен только один оаз.

контроль наше все  smile 


Цитата(Graf_h @  4.6.2009,  11:18 Найти цитируемый пост)
, тоесть return 0??

 smile 
PM MAIL   Вверх
Graf_h
Дата 4.6.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



mrbrooks,  спасибоsmile


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
asd
Дата 4.6.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.6.2006

Репутация: 1
Всего: 1



Цитата(mrbrooks @  3.6.2009,  19:18 Найти цитируемый пост)
в Windows лучше использовать beginthreadex/endthreadex


Цитата(mrbrooks @  3.6.2009,  19:18 Найти цитируемый пост)
совершенно напрасно батенька.  достаточно дельный и простой способ проконтролировать жизнедеятельность потока.


Прежде чем говорить такое и приводить цитаты про :
Цитата(mrbrooks @  4.6.2009,  07:58 Найти цитируемый пост)
функция потока возвращает управление (рекомендуемый способ), поток самоуничтожается вызовом функции ExitThread (нежелательный способ); 


неплохо бы разобраться, что человеку нужно.
Во-первых раз тема в этом разделе, то ненадо давать советов, что лучше использовать beginthreadex вместо CreateThread, Windows тут ни при чём.
Во-втиорых каким образом в уничтожении потока нам поможет WaitForSingleObject совершенно не ясно, разве что хендл прикрыть по его завершении. Но если он не нужен, то лучше вызвать CloseHandle сразу после CreateThread.
В третьих, если поток создаётся с помощбю CreateThread, то почти никакой разницы между return ExitStatus и ExitThread(ExitStatus) нет. По крайней мере я не вижу никакой, кроме того, что при ExitThread(ExitStatus) можно стек вернуть на в том состоянии, в котором он был на входе в поток.


Graf_h, 
Чтобы потоки не висели закрывай хендл потока, как только он тебе больше не нужен(Не надо ждать завершения самого потока, ему всё равно, закроешь ты хендл или нет) т.е. слушай, что сказал  bugmenot. А чтобы знать когда применять CreateThread, а когда нет, прочитай Рихтера и думай мозгомsmile

Это сообщение отредактировал(а) asd - 4.6.2009, 12:49
PM MAIL   Вверх
mrbrooks
Дата 4.6.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(asd @  4.6.2009,  12:35 Найти цитируемый пост)
Во-первых раз тема в этом разделе, то ненадо давать советов, что лучше использовать beginthreadex вместо CreateThread, Windows тут ни при чём.

Тебя вот забыл спросить. Просто не дождался.

Цитата(asd @  4.6.2009,  12:35 Найти цитируемый пост)
Во-втиорых каким образом в уничтожении потока нам поможет WaitForSingleObject совершенно не ясно, разве что хендл прикрыть по его завершении. Но если он не нужен, то лучше вызвать CloseHandle сразу после CreateThread.

RTFM

Цитата(asd @  4.6.2009,  12:35 Найти цитируемый пост)
неплохо бы разобраться, что человеку нужно.

Тебя не проведешь. Это ты у нас гений. 

Цитата(asd @  4.6.2009,  12:35 Найти цитируемый пост)
По крайней мере я не вижу никакой, кроме того, что при ExitThread(ExitStatus) можно стек вернуть на в том состоянии, в котором он был на входе в поток.

Кого волнует что ты видишь?

PM MAIL   Вверх
asd
Дата 4.6.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.6.2006

Репутация: 1
Всего: 1



mrbrooks
Однако, а хоть 1 аргумент? И по поводу чего мне идти доки читать?
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(asd @  4.6.2009,  14:35 Найти цитируемый пост)
В третьих, если поток создаётся с помощбю CreateThread, то почти никакой разницы между return ExitStatus и ExitThread(ExitStatus) нет. По крайней мере я не вижу никакой, кроме того, что при ExitThread(ExitStatus) можно стек вернуть на в том состоянии, в котором он был на входе в поток.

вообще-то разница может быть довольно значительной:

Код

DWORD Routine(...){
...
ExitThread(S_OK);
...
return S_OK;
}

DWORD WINAPI ThreadProc(LPVOID){
....
// распределяем какие-то данные, устанавливаем флаги активности и т.п.
...
rv = MainRoutine(...);
...
// освобождаем какие-то данные, сбрасываем флаги активности и т.п.
...
return rv;
}

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

мозгом тут нужно думать независимо от того, надо ли ждать завершения потока или нет


M
GremlinProg

mrbrooks, asd,
спокойствие,
страшного пока ни чего не случилось



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
mrbrooks
Дата 4.6.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



asd, дорогой друг.
1. Желательное использование beginthreadex/endthreadex в Windows при программировании на С++ не плод моей фантазии. Это совет г-на Рихтера. 
2. Цитата - взята у того же г-на Рихтера по средствам копирования/вставки через буфер обмена.
3. WaitForSingleObject позволяет узнать завершился ли поток или нет. Подробности тут. И опять таки - см. г-на Рихтера. 

Я конечно понимаю что ты офигенно классный парень - но уж если начинаешь поучать то бей аргументами - а не то, что там тебе кажется или видится.

Добавлено через 1 минуту и 18 секунд
GremlinProg, да все вроде ок  smile просто спорим.
PM MAIL   Вверх
bugmenot
Дата 4.6.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 3.7.2006

Репутация: 0
Всего: 1



Цитата(GremlinProg @  4.6.2009,  12:56 Найти цитируемый пост)
вообще-то разница может быть довольно значительной:

Я не совсем понял эту разницу, но вот что я знаю наверняка:
При return-е, функция возвращается в kernel32.dll, а там сразу вызывается тот же ExitThread.

Цитата(mrbrooks @  4.6.2009,  13:00 Найти цитируемый пост)
1. Желательное использование beginthreadex/endthreadex в Windows при программировании на С++ не плод моей фантазии. Это совет г-на Рихтера. 

Не все люди пишут на С++, я например на С пишу.

Цитата(mrbrooks @  4.6.2009,  13:00 Найти цитируемый пост)
3. WaitForSingleObject позволяет узнать завершился ли поток или нет. Подробности тут. И опять таки - см. г-на Рихтера. 

WaitForSingleObject, как подсказывает название, ждет, пока завершится поток или закончится таймаут. Чтобы узнать, завершился ли поток, лучше наверно воспользоваться GetExitCodeThread.

Цитата(asd @  4.6.2009,  12:35 Найти цитируемый пост)
т.е. слушай, что сказал  bugmenot.

Да, слушайте меня! smile
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
asd
Дата 4.6.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.6.2006

Репутация: 1
Всего: 1



Цитата(GremlinProg @  4.6.2009,  12:56 Найти цитируемый пост)
ExitThread в этом случае просто завершит поток, при этом, восстановление стека совсем не означает, что все необходимые данные будут освобождены, и уж тем более, сброшены какие-либо внутренние флаги активности (т.е. необходимые действия после 12 строки)

Стоп. ExitThread, естественно, надо вызывать, когда ф-ия потока уже всё освободила и сделала всё что нужно. Фактически я говорю об идентичности 
return rv; 
и 
ExitThread(rv);
если этот поток был создан через CreateThread, ибо после return ExitStatus мы попадаем на

Код

push eax
call ExitThread


В вашем коде 
rv = MainRoutine(...);
это вызов
DWORD Routine(...) ?
если так, то ясно, что так вызывать ExitThread нельзя.


mrbrooks, 
Всё это конечно хорошо, если мы пишем на с++ с использованием rtl. Раз тема находится в этом разделе и человек вызывает CreateThread, то я думаю, что пишет он на винапи. А мешать Винапи и beginthreadex/endthreadex бессмысленно. Если вы почитаете Рихтера внимательнее, то увидите, что он рекомендует вызавать beginthreadex/endthreadex по причинам, которые никак с виндой не связанны.


Цитата(mrbrooks @  4.6.2009,  13:00 Найти цитируемый пост)
WaitForSingleObject позволяет узнать завершился ли поток или нет.

что делает WaitForSingleObject мне известно. Только проблема состоит в том, что.
Цитата(Graf_h @  3.6.2009,  18:28 Найти цитируемый пост)
По идее он должен сам убится, когда функция возвращает 0, но у меня он и дальше висит:(

И вот вопрос, зачем вызывать WaitForSingleObject? И чем он нам может почочь?
PM MAIL   Вверх
mrbrooks
Дата 4.6.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(bugmenot @  4.6.2009,  13:23 Найти цитируемый пост)
Не все люди пишут на С++, я например на С пишу.

Резонно  smile 
Цитата(bugmenot @  4.6.2009,  13:23 Найти цитируемый пост)
WaitForSingleObject, как подсказывает название, ждет, пока завершится поток или закончится таймаут. Чтобы узнать, завершился ли поток, лучше наверно воспользоваться GetExitCodeThread.

Согласен. Только имхо ее как раз и есть смысл вызвать после WaitForSingleObject или есть другие идеи. 

Цитата(asd @  4.6.2009,  13:23 Найти цитируемый пост)
Всё это конечно хорошо, если мы пишем на с++ с использованием rtl. 

Резонно.

Цитата(asd @  4.6.2009,  13:23 Найти цитируемый пост)
Если вы почитаете Рихтера внимательнее, то увидите, что он рекомендует вызавать beginthreadex/endthreadex по причинам, которые никак с виндой не связанны.

Согласен. Разговор шел о С++. 

Цитата(asd @  4.6.2009,  13:23 Найти цитируемый пост)
А мешать Винапи и beginthreadex/endthreadex бессмысленно.

не понял - почему же? можно по подробнее?



Цитата(asd @  4.6.2009,  13:23 Найти цитируемый пост)
И вот вопрос, зачем вызывать WaitForSingleObject? И чем он нам может почочь? 

Тем что функция возвращает. Я же не утверждаю что только так можно определить завершился ли поток (WAIT_OBJECT_0) или нет (WAIT_TIMEOUT) - но как вариант имхо вполне годится.

Добавлено через 2 минуты и 13 секунд
И соответственно принимаем решения в зависимости от результата.
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(asd @  4.6.2009,  15:23 Найти цитируемый пост)

В вашем коде rv = MainRoutine(...);это вызов
DWORD Routine(...) ?

да, передумал название, пока набирал )
Цитата(asd @  4.6.2009,  15:23 Найти цитируемый пост)
если так, то ясно, что так вызывать ExitThread нельзя.

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



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
asd
Дата 4.6.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.6.2006

Репутация: 1
Всего: 1



Цитата(mrbrooks @  4.6.2009,  13:36 Найти цитируемый пост)
не понял - почему же? можно по подробнее?

Если мешать вызовы rtl и винапи, то рано или поздно произойдёт нечто подобное тому, что описывает Рихтер в разделе "Ой, вместо _beginthreadex я по ошибке вызвал CreateThread". И не факт, что это единственный такой пример.


Цитата(mrbrooks @  4.6.2009,  13:36 Найти цитируемый пост)
Тем что функция возвращает. Я же не утверждаю что только так можно определить завершился ли поток (WAIT_OBJECT_0) или нет (WAIT_TIMEOUT) - но как вариант имхо вполне годится.

Так вопрос состоит не в том, чтобы определить, завершился ли поток, а в том, _почему_ он висит после return 0;



Цитата(mrbrooks @  4.6.2009,  13:36 Найти цитируемый пост)
Согласен. Только имхо ее как раз и есть смысл вызвать после WaitForSingleObject или есть другие идеи. 

Зачем вам 2 перехода в ядро вместо 1? Wait.. ф-ии стоит вызывать, если нам нужно именно _дождаться_ завершения потока(к примеру он готовит какие-то данные для нас)

PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(mrbrooks @  4.6.2009,  15:36 Найти цитируемый пост)
Тем что функция возвращает. Я же не утверждаю что только так можно определить завершился ли поток (WAIT_OBJECT_0) или нет (WAIT_TIMEOUT) - но как вариант имхо вполне годится.

если Wait бесконечный, и он не завершится, то повиснуть могут теперь уже оба потока вместо одного
Wait дает возможность дождаться завершения, но завершить, конечно не дает


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
asd
Дата 4.6.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.6.2006

Репутация: 1
Всего: 1



Цитата(GremlinProg @  4.6.2009,  13:49 Найти цитируемый пост)
вызвать можно, но логика работы потока уже будет путаной

Ну это уже мазахизмsmile

PM MAIL   Вверх
mrbrooks
Дата 4.6.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(GremlinProg @  4.6.2009,  13:59 Найти цитируемый пост)
Wait дает возможность дождаться завершения, но завершить, конечно не дает 

я этого и не утверждал. я предлагал обработать результат функции, если поток за какое то время не завершился валить его негодяя всеми подручными средствами. smile 


Цитата(asd @  4.6.2009,  13:53 Найти цитируемый пост)
Так вопрос состоит не в том, чтобы определить, завершился ли поток, а в том, _почему_ он висит после return 0;

Ок. А как было определено что поток повис именно после return 0?

Добавлено через 3 минуты и 36 секунд
Цитата(asd @  4.6.2009,  13:53 Найти цитируемый пост)
Если мешать вызовы rtl и винапи, то рано или поздно произойдёт нечто подобное тому, что описывает Рихтер в разделе "Ой, вместо _beginthreadex я по ошибке вызвал CreateThread". И не факт, что это единственный такой пример.

сейчас пробежал глазами  - ничего ужасного супротив  _beginthreadex обнаружено не было.

Добавлено через 6 минут и 45 секунд
Цитата(asd @  4.6.2009,  13:53 Найти цитируемый пост)
Если мешать вызовы rtl и винапи, то рано или поздно произойдёт нечто подобное тому, что описывает Рихтер в разделе "Ой, вместо _beginthreadex я по ошибке вызвал CreateThread". И не факт, что это единственный такой пример.

сейчас пробежал глазами  - ничего ужасного супротив  _beginthreadex обнаружено не было.
PM MAIL   Вверх
asd
Дата 4.6.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.6.2006

Репутация: 1
Всего: 1



Цитата(mrbrooks @  4.6.2009,  14:07 Найти цитируемый пост)
Ок. А как было определено что поток повис именно после return 0?

Это сказал топикстартер.

Цитата(mrbrooks @  4.6.2009,  14:07 Найти цитируемый пост)
сейчас пробежал глазами  - ничего ужасного супротив  _beginthreadex обнаружено не было.

Да дело на в _beginthreadex. У рихтера описан вариант вызова библиотечной ф-ии в потоке созданном через CreateThread. И кто сказал что подобных вещей не может произойти, если мы начнём совмещать другие вызовы  trl с вызовами других АПИ
PM MAIL   Вверх
mrbrooks
Дата 4.6.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(asd @  4.6.2009,  14:19 Найти цитируемый пост)
Это сказал топикстартер.

Точно. Вопрос переадресуем  ему.


Цитата(asd @  4.6.2009,  14:19 Найти цитируемый пост)
Да дело на в _beginthreadex. У рихтера описан вариант вызова библиотечной ф-ии в потоке созданном через CreateThread. И кто сказал что подобных вещей не может произойти, если мы начнём совмещать другие вызовы  trl с вызовами других АПИ 

Волков боятся - в лес не ходить. smile 
Хотя ситуацию надо обмозговать.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0816 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.