У меня есть один поток, вызывающий recvfrom() и другой поток, вызывающий setsockopt(), чтобы добавить/оставить членство в многоадресной рассылке. Является ли этот поток безопасным или обе функции нужно вызывать из одного потока?Вызов recvfrom() и setsockopt() для добавления/выключения многоадресного членства из разных потоков
Q
Вызов recvfrom() и setsockopt() для добавления/выключения многоадресного членства из разных потоков
0
A
ответ
2
Это системные вызовы, а не функции библиотеки, поэтому их можно безопасно вызывать из разных потоков.
Независимо от того, влияет ли соединение/отпуск на одновременный recvfrom()
, который уже начался, является спорным вопросом.
Я не знаю, является ли это потокобезопасным или нет, но вы можете просто синхронизировать их так, чтобы принимающий поток не вызывал 'recvfrom()', в то время как поток членства вызывает 'setsockopt()', наоборот. Они не должны быть в одном потоке, но вам, вероятно, следует избегать их одновременного вызова. –
@ close-voter Что конкретно неясно об этом вопросе? – EJP