none
Вопрос по Thread RRS feed

  • Вопрос

  • Добрый день! Интересует такой вопрос, после того, как процедура в определенном потоке закончит работу, поток остается где то в памяти или нет? Закрывать и чистить вручную потребуется в конце процедуры, если потогов будет 1000 и более?
    24 марта 2011 г. 8:25

Ответы

  • Если в отдельном потоке заканчиваеться операция, чистить и освобождать потоки не нужно. Это произойдет автоматически. 

    Если потоков будет 1000 - ваш сервер умрет. Только стека на 1 поток выделяеться 1 МБ. Срочно подумайте о изменении архитектуры.


    Don't forget to mark the correct answer
    • Помечено в качестве ответа Siompc 24 марта 2011 г. 14:43
    24 марта 2011 г. 8:57

Все ответы

  • Если в отдельном потоке заканчиваеться операция, чистить и освобождать потоки не нужно. Это произойдет автоматически. 

    Если потоков будет 1000 - ваш сервер умрет. Только стека на 1 поток выделяеться 1 МБ. Срочно подумайте о изменении архитектуры.


    Don't forget to mark the correct answer
    • Помечено в качестве ответа Siompc 24 марта 2011 г. 14:43
    24 марта 2011 г. 8:57
  • Поток (объект Thread) остается в памяти. А вот, чтобы убедиться, что сама процедура закончила свою работу, лучше перестраховываться и проверять статус каждого потока и если что, то блокировать поток ручками, а затем можно уничтожить поток с помощью следующего метода: Abort.


    [My blog] [My E-mail]

    24 марта 2011 г. 8:58
  • Поток (объект Thread) остается в памяти. А вот, чтобы убедиться, что сама процедура закончила свою работу, лучше перестраховываться и проверять статус каждого потока и если что, то блокировать поток ручками, а затем можно уничтожить поток с помощью следующего метода: Abort.


    [My blog] [My E-mail]

    перестраховываться нужно, если вам важен результат. Если это подключения - к серверу - отнюдь.

    В смысле оптимизации для такого многопоточного приложения лучше использовать ThreadPool. 

    Abort - вообще исключительная ситуация. И он не гарантирует уничтожения потокаю Ведь в потоке должны выполниться еще все файнал блоки. Поэтому здесь нужно быть ооочень осторожным.


    Don't forget to mark the correct answer
    24 марта 2011 г. 9:05
  • Спасибо! Нет, 1000 это к примеру сказал. Так их не больше 4.
    24 марта 2011 г. 14:44