Здравствуйте achumack, Вы писали:
A>Здравствуйте the_moon, Вы писали:
A> A>Посмотри fibers. Ето то что тебе нужно. Сам выбираешь время переключения.
Я тут читал, читал.
Тоесть я так понял, у меня есть основной поток в котором работает мое приложение, далее я создаю два потока и оба преобразуются в нити и запускаются функции по указанным адресам, а те функции как захотят так и передают управление друг другу.
Тогда я не понял следующию фразу "The system still schedules threads to run. When a thread running fibers is preempted, its currently running fiber is preempted. The fiber runs when its thread runs."
Вернее я понял, что система все таки продолжает переключать потоки, а это значит мне попрежнему надо синхронизировать данные, вот чего мне хотелось бы избежать и из-за чего у меня критичный поток тормозил на заметный промежуток времени, потому что он ждал у меня медленный поток, а потому не являлся готовым к запуску по определению в SDK.
И непонятно еще как мне определять размер стэка, как я могу быть уверенным, что мне хватит 1 мегабайта к примеру для DirectX, может он там чего огромное в стеке держит?
И еще, происходит ли сразу переключение на другую нить, то-есть наследует ли целевой поток тот квант времени, что оставался у потока, который вызвал SwitchToFiber, или просто этот поток будет на процессоре остановлен, а управление перейдет чужому дядьке?