| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > TerminateThread |
| Автор: knark 13.4.2007, 14:49 | ||||
Суть в том, что мне надо создать максимум потоков, потом заставить их сделать сложный запрос к базе данных, потом их все убить, и снова создать столько же потоков, и опять отправлять запросы. Винда мне дает выделить порядка двух штук потоков. После этого я их убиваю в цикле.
Но потом винда мне не дает больше создавать их. Постоянно отказывает.
Как убить поток и освободить ресурсы от него. |
| Автор: Greeen 13.4.2007, 15:12 |
| НИКОГДА не следует пользоваться функцией TerminateThread. Организуй логику так чтобы поток уничтожал сам себя. P.S. и не думай что чем больше у тебя потоков, тем эффективней будет твоя программа. 2000 тредов это просто кошмар. |
| Автор: knark 13.4.2007, 15:17 | ||
Логика не катит. Дело в том что в треде запускается запрос к базе данных, тяжелый запрос. Мне надо прервать его.
Без TerminateThread не обойтись. |
| Автор: Greeen 13.4.2007, 15:22 |
| Хм.. то есть ты хочешь завершить тред в процессе выполнения ExecuteSQL? |
| Автор: knark 13.4.2007, 15:29 |
| Да |
| Автор: Greeen 13.4.2007, 15:36 |
| Что тут посоветуешь. Разбить запрос на небольшие и в промежутках между ними проверять, а не пора ли мне (потоку) умирать. Иначе TerminateThread, но это конечно наихудшее решение. |
| Автор: knark 13.4.2007, 15:48 |
| Мне нужно узнать, сколько база данных сможет выдержать запросов. Суть в том что мне как раз надо что бы запрос выполянлся на ней, а на моем компе, он должен умереть, что бы освободить тред, для нового запроса. |
| Автор: Nuzur 13.4.2007, 16:36 |
| knark, а что за БД? |
| Автор: Greeen 13.4.2007, 20:00 |
| knark, не самый лучший способ узнать производительность субд ИМХО |