Безопасен ли DatagramSocket.send?
Я планирую использовать экземпляр DatagramSocket
и вызывать его метод send из разных потоков... для отправки UDP-пакетов другим клиентам. Является ли метод потоком безопасным, то есть вызов этого метода из разных потоков не приведет к возникновению каких-либо проблем/несогласованности/состояния гонки?
Спасибо!
Ответы
Ответ 1
UDP гарантирует, что дейтаграммы будут возвращены (если вообще). Другими словами, не может быть чередования, даже если в отправителе многопоточность. Это все, что вам нужно. На самом деле вам не нужна безопасность потоков. Однако системный вызов C send() является потокобезопасным, как и все системные вызовы, поскольку они являются атомарными.
Ответ 2
Да. Это только тонкий слой на родной ОС, который является потокобезопасным.
См. здесь http://www.velocityreviews.com/forums/t150685-is-datagramsocket-thread-safe.html