Потоки в приложении.
От: Zeter  
Дата: 13.08.15 15:42
Оценка:
Доброго всем времени суток.Хочу спросить совета у знающих людей.
У меня есть программа в которой присутствуют основной процесс и 2 потока. В основном процессе определена и описана функция записи в ЛОГ файл. Входной информацией функции является имя файла для записи и текст который надо записать. У каждого потока как и у основного процесса есть свой файл в который он записывает служебную инфу. Правильно ли это? У меня получается одна функция к которой в процессе работы обращаются как потоки так и основной процесс.
Re: Потоки в приложении.
От: 0x7be СССР  
Дата: 13.08.15 15:57
Оценка:
Здравствуйте, Zeter, Вы писали:

Z>Доброго всем времени суток.Хочу спросить совета у знающих людей.

Z>У меня есть программа в которой присутствуют основной процесс и 2 потока. В основном процессе определена и описана функция записи в ЛОГ файл. Входной информацией функции является имя файла для записи и текст который надо записать. У каждого потока как и у основного процесса есть свой файл в который он записывает служебную инфу. Правильно ли это? У меня получается одна функция к которой в процессе работы обращаются как потоки так и основной процесс.
Ничего принципиально ошибочного в этом нет.
Гораздо интереснее вопрос, является ли это оптимальным решением в твоём случае.
Но на него невозможно ответить, основываясь на приведенных данных.
Re: Потоки в приложении.
От: BulatZiganshin  
Дата: 13.08.15 16:18
Оценка:
Здравствуйте, Zeter, Вы писали:

Z>У меня получается одна функция к которой в процессе работы обращаются как потоки так и основной процесс.


неизменяемые объекты допускают одновременный доступ
Люди, я люблю вас! Будьте бдительны!!!
Re: Потоки в приложении.
От: vsb Казахстан  
Дата: 13.08.15 16:46
Оценка:
Здравствуйте, Zeter, Вы писали:

Z>Доброго всем времени суток.Хочу спросить совета у знающих людей.

Z>У меня есть программа в которой присутствуют основной процесс и 2 потока. В основном процессе определена и описана функция записи в ЛОГ файл. Входной информацией функции является имя файла для записи и текст который надо записать. У каждого потока как и у основного процесса есть свой файл в который он записывает служебную инфу. Правильно ли это? У меня получается одна функция к которой в процессе работы обращаются как потоки так и основной процесс.

Ошибок, связанных с многопоточностью в этом варианте нет. Но открывать на каждый вызов файл это довольно накладно, если, конечно, у вас логгинг используется достаточно часто.
Re[2]: Потоки в приложении.
От: Zeter  
Дата: 13.08.15 16:53
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, Zeter, Вы писали:


Z>>Доброго всем времени суток.Хочу спросить совета у знающих людей.

Z>>У меня есть программа в которой присутствуют основной процесс и 2 потока. В основном процессе определена и описана функция записи в ЛОГ файл. Входной информацией функции является имя файла для записи и текст который надо записать. У каждого потока как и у основного процесса есть свой файл в который он записывает служебную инфу. Правильно ли это? У меня получается одна функция к которой в процессе работы обращаются как потоки так и основной процесс.

vsb>Ошибок, связанных с многопоточностью в этом варианте нет. Но открывать на каждый вызов файл это довольно накладно, если, конечно, у вас логгинг используется достаточно часто.



Спасибо большое всем за ответы. )
Re[3]: Потоки в приложении.
От: Zeter  
Дата: 13.08.15 17:04
Оценка:
Здравствуйте, Zeter, Вы писали:

Z>Здравствуйте, vsb, Вы писали:


vsb>>Здравствуйте, Zeter, Вы писали:


Z>>>Доброго всем времени суток.Хочу спросить совета у знающих людей.

Z>>>У меня есть программа в которой присутствуют основной процесс и 2 потока. В основном процессе определена и описана функция записи в ЛОГ файл. Входной информацией функции является имя файла для записи и текст который надо записать. У каждого потока как и у основного процесса есть свой файл в который он записывает служебную инфу. Правильно ли это? У меня получается одна функция к которой в процессе работы обращаются как потоки так и основной процесс.

vsb>>Ошибок, связанных с многопоточностью в этом варианте нет. Но открывать на каждый вызов файл это довольно накладно, если, конечно, у вас логгинг используется достаточно часто.



Z>Спасибо большое всем за ответы. )



PPS:

Возник еще один вопрос. Про остановку потока.

У меня возникает ситуация в которой в одном потоке крутится примитивный Веб сервер. Для остановки потока я использую TerminateThread(). Вопрос: каким способом можно еще остановить поток если о висит на прослушке порта и не доходит до своего конца (if (terminated)) пока не поступит сообщение на порт.
Re[4]: Потоки в приложении.
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.08.15 17:28
Оценка: +2
Здравствуйте, Zeter, Вы писали:

Z>У меня возникает ситуация в которой в одном потоке крутится примитивный Веб сервер. Для остановки потока я использую TerminateThread(). Вопрос: каким способом можно еще остановить поток если о висит на прослушке порта и не доходит до своего конца (if (terminated)) пока не поступит сообщение на порт.

Не делать так.
Во-первых, у всех функций ожидания есть вариант с таймаутом — можно пользоваться им и с соответствующей регулярностью проверять "а не пора ли нам и честь знать". Например, раз в секунду, или в 200мсек.
А ещё лучше ожидать не одного события, а двух сразу — "приход данных" и "приход оповещения о прекращении работы".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Потоки в приложении.
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 17.08.15 13:16
Оценка: +1
Z>У меня возникает ситуация в которой в одном потоке крутится примитивный Веб сервер. Для остановки потока я использую TerminateThread(). Вопрос: каким способом можно еще остановить поток если о висит на прослушке порта и не доходит до своего конца (if (terminated)) пока не поступит сообщение на порт.

TerminateThread нельзя использовать никогда

TerminateThread is a dangerous function that should only be used in the most extreme cases. You should call TerminateThread only if you know exactly what the target thread is doing, and you control all of the code that the target thread could possibly be running at the time of the termination. For example, TerminateThread can result in the following problems:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms686717%28v=vs.85%29.aspx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.