【发布时间】:2010-06-29 13:17:02
【问题描述】:
在过去的 48 小时里,我一直在努力理解 Multithreading 和 Socket Programming。我尝试实现套接字编程并在不使用多线程时取得了成功。我对这两个主题都很陌生,并且在堆栈本身上提出了 2-3 个问题,需要同样的帮助。
谷歌搜索了很多后,我找到了一个解释Socket Programming和Multithreading的article,但我对这篇文章仍有很多疑问,并在Figure 5中卡住了文章。
private void AcceptConnections()
{
while (true)
{
// Accept a connection
Socket socket = _serverSocket.Accept();
ConnectionInfo connection = new ConnectionInfo();
connection.Socket = socket;
// Create the thread for the receives.
connection.Thread = new Thread(ProcessConnection);
connection.Thread.IsBackground = true;
connection.Thread.Start(connection);
// Store the socket
lock (_connections) _connections.Add(connection);
}
}
在最后一行中,您可以看到 lock 已被占用,delegate ProcessConnection 上方的 3-4 行已绑定。
在这一点上,我不清楚这个锁是如何工作的。锁定后幕后发生了什么?为什么作者在这里使用了lock?如果没有锁会发生什么?线程 ProcessConnection 是如何工作的?什么事情同时发生?
我对所有这些问题感到困惑
我知道这里有一个问题列表,但如果您能帮助我理解使用多线程的方法,那将是一个很大的帮助。
【问题讨论】:
标签: c# multithreading sockets locking