当两个不同的线程使用相同的光纤地址同时调用SwitchToFiber()时会发生什么?
void Thread1() { SwitchToFiber(fiberA); }
void Thread2() { SwitchToFiber(fiberA); }
这是非法的吗?
答案 0 :(得分:1)
documentation明确指出:
SwitchToFiber
功能可保存当前光纤的状态信息并恢复指定光纤的状态。 您可以使用由其他线程创建的光纤地址呼叫SwitchToFiber
。为此,您必须在调用该线程CreateFiber
时将地址返回给另一个线程,并且必须使用正确的同步。
如果不同步线程以串行化跨线程边界的光纤切换,则会遇到未定义行为领域,因此任何事情都可能发生。