lock关键字这么用对吧?

谁学逆向工程 2016-10-22 09:42:17
接收到有人连接就保存起来,那个lock用的对吧? 等有人断开的时候就从容器里删除。删除的代码还没写呢
namespace diancai
{
public class GlobleVariable
{
public static Socket s;
public static IPEndPoint ipe;
public static List<Socket> arrSocket;
}
}

namespace diancai
{
public partial class MainWindow : Form
{
public MainWindow()
{
InitializeComponent();
Text = GlobleVariable.sWindowTitle;
}

private void MainWindow_Load(object sender, EventArgs e)
{
GlobleVariable.arrSocket = new List<Socket>();//初始化容器
}
}
}

        private void btn_point_Click(object sender, EventArgs e)//单击按钮
{
Thread ListenSocket = new Thread(new ThreadStart(fnListenSocket));
ListenSocket.Start();
}
protected void fnListenSocket()
{
GlobleVariable.ipe = new IPEndPoint(IPAddress.Parse(textBox1.Text), Convert.ToInt32(textBox2.Text));
GlobleVariable.s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字
GlobleVariable.s.Bind(GlobleVariable.ipe);//绑定EndPoint对像(8889端口和ip地址)
GlobleVariable.s.Listen(0);//开始监听
while(true)
{
Socket temp = GlobleVariable.s.Accept();
lock (GlobleVariable.arrSocket)
{
GlobleVariable.arrSocket.Add(temp);
}
}
}
...全文
183 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
不同的代码使用一个对象作为“标记”来进行线程同步,这其实是一个约定。所以你这个问题“那个lock用的对吧”其实没有什么特别的意思,你也没有写出另一部分“删除部分”的代码设计来。就现在很浅的问题来说,只能说“明白了你的约定”的含义,至于将来你有没有写错,现在还看不出来。
  • 打赏
  • 举报
回复
引用 4 楼 xiaoyuanyuan2009 的回复:
引用 3 楼 weixin_36491034 的回复:
是的,没有问题,但但代码量大了就不适合lock了
代码量大用什么好
跟代码量大小没有关系。就算是1万行代码,也可以用一个简单的“过程”来调用,那么也就是封装为“一条代码”,何来“量大”呢? 这主要是说“非结构化”的对信号同步资源执行 Enter、Exit 操作。如果你写的不是结构化程序,那么自然就不能用结构化的 lock 语句。这就好像你住的是房子,你就用普通的房子;你住的是太空,那就要用宇宙飞船当房子。
正怒月神 2016-10-24
  • 打赏
  • 举报
回复
没什么问题的
谁学逆向工程 2016-10-24
  • 打赏
  • 举报
回复
引用 3 楼 weixin_36491034 的回复:
是的,没有问题,但但代码量大了就不适合lock了
代码量大用什么好
weixin_36491034 2016-10-24
  • 打赏
  • 举报
回复
是的,没有问题,但但代码量大了就不适合lock了
SoulRed 2016-10-22
  • 打赏
  • 举报
回复
如果是短时锁定的话,建议用spinlock 。你的写法没什么问题。
  • 打赏
  • 举报
回复
可以。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧