Что происходит, когда два разных потока SwitchToFiber подключаются к одному и тому же волокну? - PullRequest
0 голосов
/ 26 ноября 2018

Что происходит, когда два разных потока одновременно вызывают SwitchToFiber (), используя одни и те же оптоволоконные адреса для переключения на?

void Thread1() { SwitchToFiber(fiberA); }
void Thread2() { SwitchToFiber(fiberA); }

Это недопустимо?

1 Ответ

0 голосов
/ 26 ноября 2018

Документация четко гласит:

Функция SwitchToFiber сохраняет информацию о состоянии текущего волокна и восстанавливает состояние указанного волокна. Вы можете позвонить SwitchToFiber с адресом волокна, созданного другим потоком .Для этого вам необходимо вернуть адрес другому потоку, когда он вызвал CreateFiber и , вы должны использовать правильную синхронизацию .

Если вы не синхронизируете свои потокичтобы сериализовать переключение волокон через границы потоков, вы сталкиваетесь с неопределенным поведением территорией, поэтому может произойти что угодно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...