-
Notifications
You must be signed in to change notification settings - Fork 22
控制器线程级别
Henry edited this page Oct 12, 2019
·
1 revision
组件可以根据不同情况采用不同的线程机制来调用控制器方法,主要提供以下一种线程调用机制。
这种模式下,实例所有方法都在一个线程下并有序地执行;这时候实例的所有方法都是线程安全的,客户端只需要创建接口代理名称指定Actor
名称即可。
var henry = EventCenter.Create<IUserService>("henry");
这种配置只适用于接口方法,描述方法无论什么情况都从线程池中执行相关代码,此行为的方法非线程安全
[ThreadInvoke(ThreadType.ThreadPool)]
public Task<int> ThreadInvoke()
{
mCount++;
return mCount.ToTask();
}
这种配置只适用于接口方法,用于描述方法不管那个实例都一致性到一个队列中,此行为的方法内线程安全,不保证对应实例是线程安全.
[ThreadInvoke(ThreadType.SingleQueue)]
public Task<int> GetID([ThreadUniqueID]string name)
{
if (!mValues.TryGetValue(name, out int value))
{
value = 1;
}
else
{
value++;
}
mValues[name] = value;
return value.ToTask();
}
在这配置下还可以再细分,如上面的[ThreadUniqueID]
对不同参数做一致性对列,这个时候name
的不同值会一致性到不同的事件队列中。