Я хочу знать о волокне, которое предоставляет окно.
Давайте предположим, что я создал 4 волокна.
————нить——————
fiber1 — fiber2 — fiber3 — fiber4
Волокно 1 теперь выполняется потоком.
Один поток может работать только с одним волокном одновременно. Это верно?
Если нить оканчивает fiber1, то другие все волокна тоже терминируются?
Я знаю, что волокно не является преимущественным. Тогда, если я хочу переключить fiber1 на fiber2, нет никакого способа, кроме как вызвать SwitchToFiber в fiber1?
Если я вызову SwitchToFiber в fiber1 во время выполнения какой-либо задачи, то fiber1 немедленно перестанет работать? или спать после завершения своей задачи?
Нет общего пространства в fiber1 to fiber4?
И нет общего пространства, тогда нет необходимости блокировать оптоволокно. это верно?
Я читаю документы MSDN, но не могу что-то понять. Поэтому я спрашиваю здесь.
SwitchToFiber
как longjmp
, а также CreateFiber
это как расширенная версия setjmp
это выделяет дополнительное пространство стека. DeleteFiber
это как free
контекстного блока, выделенного setjmp
, И самое главное, дарители ничего не делают сами по себе, и longjmp
это как расширенная версия Си goto
например, похож на расширение «computed goto» в gcc, за исключением того, что он может переключать стек при прыжке. Вы можете легко эмулировать волокна (не переносимые) с setjmp
, longjmp
и немного alloca
,
Других решений пока нет …