From 0d76636117c99921ac7c43293ba7962d22e72fbd Mon Sep 17 00:00:00 2001 From: Andrew Aladjev Date: Tue, 23 Feb 2021 01:35:01 +0300 Subject: added mutexes for socket and connection lists on win32 --- test/socket/test_tcp.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test') diff --git a/test/socket/test_tcp.rb b/test/socket/test_tcp.rb index a9e2a417a5..b897ff5642 100644 --- a/test/socket/test_tcp.rb +++ b/test/socket/test_tcp.rb @@ -115,4 +115,29 @@ class TestSocket_TCPSocket < Test::Unit::TestCase assert_raise(IO::WaitReadable) { svr.accept_nonblock(exception: true) } } end + + def test_accept_multithread + attempts_count = 5 + server_threads_count = 3 + client_threads_count = 3 + + attempts_count.times do + server_threads = Array.new(server_threads_count) do + Thread.new do + TCPServer.open("localhost", 0) do |server| + accept_threads = Array.new(client_threads_count) do + Thread.new { server.accept.close } + end + client_threads = Array.new(client_threads_count) do + Thread.new { TCPSocket.open(server.addr[3], server.addr[1]) } + end + client_threads.each(&:join) + accept_threads.each(&:join) + end + end + end + + server_threads.each(&:join) + end + end end if defined?(TCPSocket) -- cgit v1.2.3