我的服务标有ServiceBehavior属性
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
此服务中的操作是否有可能由同一个线程执行?
我正在ThreadLocal变量中存储一个重要数据,该变量将用于单个执行操作。
答案 0 :(得分:3)
不,
每个请求都在另一个线程中回答。 InstanceContextMode.Single属性指定服务为每个请求使用相同的对象(及其成员)。
答案 1 :(得分:2)
请注意,WCF中的线程由ThreadPool =>处理。线程不会在请求处理之后处理,而是返回到池中,因此可以将其重用于其他请求处理。我不确定这如何与ThreadLocal< T>但是使用ThreadStaticAttribute,这可以很容易地将值从一个请求处理传递到下一个将使用相同线程的随机请求处理。