I know in C++ with IOCP when you issue few async reads/writes on socket, even tho order of executing them on completion port is in order,because of scheduling worker/processing threads might pick up to process them out of order(for ex. 2nd read/write first and 1st after). Is this a case with C# and Send/ReceiveAsync too? I can't really find any info on msdn about this.
Thanks.
Yes. Imagine two .NET threads running two completion callbacks. The OS is now at liberty to suspend any one of them before the first instruction for any amount of time. For that phenomenon alone you can never rely on the order of call back invocation for concurrent IOs.
If you want ordering you need to sequence the processing yourself.