Доброго времени суток,подскажите пожалуйста, если вызывать функцию из другого потока, то какой поток будет ее обрабатывать, тот, что вызывает, или поток-владелец функции? Пробовал экспериментировать сам: создал поток, в run() увел его в вечный цикл, чтоб у него не было возможности отвечать на вызовы. После чего в главном потоке вызвал его функцию, как ни странно ответ пришел. В дебаггере ставил точку останова в функции дочернего потока, управление приходит, и gdb показывает, что эту функцию обслуживает первый, то есть основной поток. Но слава gdb мне не внушает доверия. Что скажете?И заодно уже второй вопрос задам. Если писать в соккет, который принадлежит другому потоку, ничего страшного не будет? Я уже так делал, вроде ничего, кроме того, что соккет на это не реагирует, до того, как поток-владелец не получит процессорное время. Но я думаю что это из-за каких то специфичных ивентов соккета, и пока цикл обработки сообщений не работает, то и данные не пишутся. Если не прав - поправьте.
|