Need to synchronize Socket.send()?

Brad Roberts braddr at puremagic.com
Sun Aug 19 19:52:37 PDT 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



More information about the Digitalmars-d mailing list