找回密码
 注册帐号

扫一扫,访问微社区

Socket Tcp 多个客户端对一个服务器问题

6
回复
873
查看
[ 复制链接 ]
7日久生情
2112/5000
排名
1775
昨日变化

17

主题

198

帖子

2112

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
137313
好友
0
蛮牛币
2019
威望
0
注册时间
2016-2-23
在线时间
1153 小时
最后登录
2021-2-22
2019-9-19 17:27:34 显示全部楼层 阅读模式
30蛮牛币

我现在有多个客户端(大于等于6)连到服务器,如果不同时发数据就没问题,但是有可能会同时发数据,这个时候服务器该怎么处理,有大佬指点一下吗?



回复

使用道具 举报

5熟悉之中
850/1000
排名
9578
昨日变化

4

主题

170

帖子

850

积分

Rank: 5Rank: 5

UID
126711
好友
0
蛮牛币
369
威望
0
注册时间
2015-10-25
在线时间
556 小时
最后登录
2021-4-8
2019-9-19 17:27:35 显示全部楼层

百度加度娘
互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。
互斥锁可适用于一个共享资源每次只能被一个线程访问的情况
using System;
using System.Collections.Generic;
using System.Threading;

/// <summary>
/// 一个需要执行的方法
/// </summary>
public delegate void ExecuteDelegate();

/// <summary>
/// 单线程池
/// </summary>
public class SingleExecute
{
        private static SingleExecute instance = null;

        /// <summary>
        /// 单例
        /// </summary>
        public static SingleExecute Instance
        {
                get
                {
                        lock ( o )
                        {
                                if ( instance == null )
                                        instance = new SingleExecute();
                                return instance;
                        }
                }
        }

        private static object o = 1;

        /// <summary>
        /// 互斥锁
        /// </summary>
        public Mutex mutex;

        private SingleExecute()
        {
                mutex = new Mutex();
        }

        /// <summary>
        /// 单线程处理逻辑
        /// </summary>
        /// <param name="executeDelegate"></param>
        public void Execute( ExecuteDelegate executeDelegate )
        {
                lock ( this )
                {
                        mutex.WaitOne();
                        executeDelegate();
                        mutex.ReleaseMutex();
                }
        }


}




SingleExecute.Instance.Execute( () =>
        {
// 方法
});
回复

使用道具 举报

5熟悉之中
850/1000
排名
9578
昨日变化

4

主题

170

帖子

850

积分

Rank: 5Rank: 5

UID
126711
好友
0
蛮牛币
369
威望
0
注册时间
2015-10-25
在线时间
556 小时
最后登录
2021-4-8
2019-9-19 23:11:20 显示全部楼层
互斥锁 应该可以
回复

使用道具 举报

7日久生情
2112/5000
排名
1775
昨日变化

17

主题

198

帖子

2112

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
137313
好友
0
蛮牛币
2019
威望
0
注册时间
2016-2-23
在线时间
1153 小时
最后登录
2021-2-22
楼主 2019-9-20 09:43:52 显示全部楼层

互斥锁怎么搞?
回复

使用道具 举报

排名
64952
昨日变化

0

主题

12

帖子

31

积分

Rank: 1

UID
49177
好友
0
蛮牛币
21
威望
0
注册时间
2014-10-15
在线时间
17 小时
最后登录
2019-9-20
2019-9-20 14:28:56 显示全部楼层
你客户端给服务器发的信息压在队列里,用一个专门循环函数处理一个一个从队列里弹出来
回复

使用道具 举报

5熟悉之中
850/1000
排名
9578
昨日变化

4

主题

170

帖子

850

积分

Rank: 5Rank: 5

UID
126711
好友
0
蛮牛币
369
威望
0
注册时间
2015-10-25
在线时间
556 小时
最后登录
2021-4-8
2019-9-22 11:05:33 显示全部楼层

不知道行不行 你试试吧
回复

使用道具 举报

7日久生情
2112/5000
排名
1775
昨日变化

17

主题

198

帖子

2112

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
137313
好友
0
蛮牛币
2019
威望
0
注册时间
2016-2-23
在线时间
1153 小时
最后登录
2021-2-22
楼主 2019-9-23 11:49:37 显示全部楼层
于欢欢 发表于 2019-9-22 11:04
百度加度娘
互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。
互斥锁可适用于 ...

大佬牛逼!!!  我去试一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关注游戏蛮牛公众号送vip