digitalmars.D - Need to synchronize Socket.send()?
- Max Kaufmann (36/36) Aug 19 2007 Consider this threaded socket server:
- Brad Roberts (5/46) Aug 19 2007 In your example, each connection is it's own unique socket, so there's
- BCS (5/9) Aug 19 2007 I'm no expert, but I'd guess not, each thread will get it's own socket, ...
- BCS (4/18) Aug 19 2007 need to syncroniz it
Consider this threaded socket server: import std.stdio; import std.string; import std.socket; import std.thread; void main() { char[] ip = "127.0.0.1"; int port = 12345; WorkerThread[] threads = []; writefln("Listening on "~ip~":"~toString(port)); InternetAddress addr = new InternetAddress(ip,port); Socket sock = new TcpSocket(); scope(exit) sock.close(); sock.bind(addr); sock.listen(1); while(1) { WorkerThread worker = new WorkerThread(sock.accept()); worker.start(); } } class WorkerThread : Thread { private: Socket conn; public: this(Socket conn) { super(); this.conn = conn; writefln("Spawning New Thread."); } int run() { byte[] bytesToSend = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; conn.send(bytesToSend); return 0; } } Is Socket.send() synchronized, or do I need to synchronize it myself?
Aug 19 2007
Max Kaufmann wrote:Consider this threaded socket server: import std.stdio; import std.string; import std.socket; import std.thread; void main() { char[] ip = "127.0.0.1"; int port = 12345; WorkerThread[] threads = []; writefln("Listening on "~ip~":"~toString(port)); InternetAddress addr = new InternetAddress(ip,port); Socket sock = new TcpSocket(); scope(exit) sock.close(); sock.bind(addr); sock.listen(1); while(1) { WorkerThread worker = new WorkerThread(sock.accept()); worker.start(); } } class WorkerThread : Thread { private: Socket conn; public: this(Socket conn) { super(); this.conn = conn; writefln("Spawning New Thread."); } int run() { byte[] bytesToSend = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; conn.send(bytesToSend); return 0; } } Is Socket.send() synchronized, or do I need to synchronize it myself?In your example, each connection is it's own unique socket, so there's no need to sync on anything. Later, Brad
Aug 19 2007
Reply to Max,Consider this threaded socket server:[...]Is Socket.send() synchronized, or do I need to synchronize it myself?I'm no expert, but I'd guess not, each thread will get it's own socket, so that shouldn't be a problem and I'd be surprised if Socket.send is not thread safe.
Aug 19 2007
Reply to Benjamin,Reply to Max,that you willConsider this threaded socket server:[...]Is Socket.send() synchronized, or do I need to synchronize it myself?I'm no expert, but I'd guessnotneed to syncroniz it, each thread will get it's own socket, so that shouldn't be a problem and I'd be surprised if Socket.send is not thread safe.x-b
Aug 19 2007