Skip to content

Commit 081d41c

Browse files
committed
up
1 parent 31149cf commit 081d41c

File tree

3 files changed

+39
-18
lines changed

3 files changed

+39
-18
lines changed

Event.cs

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,22 @@ public static bool isPause()
7373
return _isPauseOut;
7474
}
7575

76+
public static void monitor_Enter(object obj)
77+
{
78+
if(KBEngineApp.app == null || KBEngineApp.app.getInitArgs().isMultiThreads == false)
79+
return;
80+
81+
Monitor.Enter(obj);
82+
}
83+
84+
public static void monitor_Exit(object obj)
85+
{
86+
if(KBEngineApp.app == null || KBEngineApp.app.getInitArgs().isMultiThreads == false)
87+
return;
88+
89+
Monitor.Exit(obj);
90+
}
91+
7692
public static bool hasRegisterOut(string eventname)
7793
{
7894
return _hasRegister(events_out, eventname);
@@ -87,9 +103,9 @@ private static bool _hasRegister(Dictionary<string, List<Pair>> events, string e
87103
{
88104
bool has = false;
89105

90-
Monitor.Enter(events);
106+
monitor_Enter(events);
91107
has = events.ContainsKey(eventname);
92-
Monitor.Exit(events);
108+
monitor_Exit(events);
93109

94110
return has;
95111
}
@@ -128,20 +144,20 @@ private static bool register(Dictionary<string, List<Pair>> events, string event
128144
return false;
129145
}
130146

131-
Monitor.Enter(events);
147+
monitor_Enter(events);
132148
if(!events.TryGetValue(eventname, out lst))
133149
{
134150
lst = new List<Pair>();
135151
lst.Add(pair);
136152
//Dbg.DEBUG_MSG("Event::register: event(" + eventname + ")!");
137153
events.Add(eventname, lst);
138-
Monitor.Exit(events);
154+
monitor_Exit(events);
139155
return true;
140156
}
141157

142158
//Dbg.DEBUG_MSG("Event::register: event(" + eventname + ")!");
143159
lst.Add(pair);
144-
Monitor.Exit(events);
160+
monitor_Exit(events);
145161
return true;
146162
}
147163

@@ -157,12 +173,12 @@ public static bool deregisterIn(string eventname, object obj, string funcname)
157173

158174
private static bool deregister(Dictionary<string, List<Pair>> events, string eventname, object obj, string funcname)
159175
{
160-
Monitor.Enter(events);
176+
monitor_Enter(events);
161177
List<Pair> lst = null;
162178

163179
if(!events.TryGetValue(eventname, out lst))
164180
{
165-
Monitor.Exit(events);
181+
monitor_Exit(events);
166182
return false;
167183
}
168184

@@ -172,12 +188,12 @@ private static bool deregister(Dictionary<string, List<Pair>> events, string eve
172188
{
173189
//Dbg.DEBUG_MSG("Event::deregister: event(" + eventname + ":" + funcname + ")!");
174190
lst.RemoveAt(i);
175-
Monitor.Exit(events);
191+
monitor_Exit(events);
176192
return true;
177193
}
178194
}
179195

180-
Monitor.Exit(events);
196+
monitor_Exit(events);
181197
return false;
182198
}
183199

@@ -193,7 +209,7 @@ public static bool deregisterIn(object obj)
193209

194210
private static bool deregister(Dictionary<string, List<Pair>> events, object obj)
195211
{
196-
Monitor.Enter(events);
212+
monitor_Enter(events);
197213

198214
foreach(KeyValuePair<string, List<Pair>> e in events)
199215
{
@@ -210,7 +226,7 @@ private static bool deregister(Dictionary<string, List<Pair>> events, object obj
210226
}
211227
}
212228

213-
Monitor.Exit(events);
229+
monitor_Exit(events);
214230
return true;
215231
}
216232

@@ -244,7 +260,7 @@ public static void fireAll(string eventname, object[] args)
244260

245261
private static void fire_(Dictionary<string, List<Pair>> events, LinkedList<EventObj> firedEvents, string eventname, object[] args)
246262
{
247-
Monitor.Enter(events);
263+
monitor_Enter(events);
248264
List<Pair> lst = null;
249265

250266
if(!events.TryGetValue(eventname, out lst))
@@ -254,7 +270,7 @@ private static void fire_(Dictionary<string, List<Pair>> events, LinkedList<Even
254270
else
255271
Dbg.WARNING_MSG("Event::fireOut: event(" + eventname + ") not found!");
256272

257-
Monitor.Exit(events);
273+
monitor_Exit(events);
258274
return;
259275
}
260276

@@ -266,12 +282,12 @@ private static void fire_(Dictionary<string, List<Pair>> events, LinkedList<Even
266282
firedEvents.AddLast(eobj);
267283
}
268284

269-
Monitor.Exit(events);
285+
monitor_Exit(events);
270286
}
271287

272288
public static void processOutEvents()
273289
{
274-
Monitor.Enter(events_out);
290+
monitor_Enter(events_out);
275291

276292
if(firedEvents_out.Count > 0)
277293
{
@@ -283,7 +299,7 @@ public static void processOutEvents()
283299
firedEvents_out.Clear();
284300
}
285301

286-
Monitor.Exit(events_out);
302+
monitor_Exit(events_out);
287303

288304
while (doingEvents_out.Count > 0 && !_isPauseOut)
289305
{
@@ -311,7 +327,7 @@ public static void processOutEvents()
311327

312328
public static void processInEvents()
313329
{
314-
Monitor.Enter(events_in);
330+
monitor_Enter(events_in);
315331

316332
if(firedEvents_in.Count > 0)
317333
{
@@ -323,7 +339,7 @@ public static void processInEvents()
323339
firedEvents_in.Clear();
324340
}
325341

326-
Monitor.Exit(events_in);
342+
monitor_Exit(events_in);
327343

328344
while (doingEvents_in.Count > 0)
329345
{

KBEMain.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public virtual void initKBEngine()
6161
args.SEND_BUFFER_MAX = (UInt32)SEND_BUFFER_MAX;
6262
args.RECV_BUFFER_MAX = (UInt32)RECV_BUFFER_MAX;
6363

64+
args.isMultiThreads = isMultiThreads;
65+
6466
if(isMultiThreads)
6567
gameapp = new KBEngineAppThread(args);
6668
else

KBEngineArgs.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ public class KBEngineArgs
3535
// 接收缓冲区大小
3636
public MessageLengthEx RECV_BUFFER_MAX = NetworkInterface.TCP_PACKET_MAX;
3737

38+
// 是否多线程启动
39+
public isMultiThreads = false;
40+
3841
// 只在多线程模式启用
3942
// 主循环tick间隔
4043
public int HZ_TICK = 100;

0 commit comments

Comments
 (0)