2014-12-20 1 views
0

У меня есть один поток, вызывающий recvfrom() и другой поток, вызывающий setsockopt(), чтобы добавить/оставить членство в многоадресной рассылке. Является ли этот поток безопасным или обе функции нужно вызывать из одного потока?Вызов recvfrom() и setsockopt() для добавления/выключения многоадресного членства из разных потоков

+0

Я не знаю, является ли это потокобезопасным или нет, но вы можете просто синхронизировать их так, чтобы принимающий поток не вызывал 'recvfrom()', в то время как поток членства вызывает 'setsockopt()', наоборот. Они не должны быть в одном потоке, но вам, вероятно, следует избегать их одновременного вызова. –

+0

@ close-voter Что конкретно неясно об этом вопросе? – EJP

ответ

2

Это системные вызовы, а не функции библиотеки, поэтому их можно безопасно вызывать из разных потоков.

Независимо от того, влияет ли соединение/отпуск на одновременный recvfrom(), который уже начался, является спорным вопросом.