• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

Fiber

  • Автор темы NetDigger
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

NetDigger

#1
Здравствуйте, уважаемые!
Кто-нибудь сталкивался с необходимостью использовать Fiber'ы ("волокна") в свохи программах? Напишите, что полезного дают они программисту, кроме как портирование никсовых приложений в Вин32? Возможно, есть нестандартные способы их использования. Если у кого есть - буду рад ссылочке на ресурс (П.С. Рихтер зачитан до дыр =) Да, совсем забыл: работу с "волокнами" необходимо обеспечить в Дельфи через АПИ.
Заранее благодарен.
 
B

Barmutik

#2
Своего мнения нет поэтому приведу выдержку:

MS Win32 API:

In general, fibers do not provide advantages over a well-designed
multithreaded application.
However, using fibers can make it easier to port applications that
were designed to schedule their own threads.
В Дельфи нет никакой поддержки Fiber-ов, так что работать придётся через API в любом случае...
 
Z

zubr

#3
NetDigger

Вот функции API для создания волокон в той последовательности, которая необходима для создания волокна:
1. function ConvertThreadToFiber(lpParameter: Pointer): BOOL - вместо lpParameter надо поставить GetFiberData(хотя в модуле Windows.pas такой функции нет, поищи в других модулях - я это все делал в C++)
2. function CreateFiber(dwStackSize: DWORD; lpStartAddress: TFNFiberStartRoutine;
lpParameter: Pointer): BOOL
3. function SwitchToFiber(lpFiber: Pointer): BOOL
Для удаления волокна используй function DeleteFiber(lpFiber: Pointer): BOOL

Сам видишь какой геморрой при создании волокна, а результат такой же как и при создании потока, где достаточно одной CreateThread
 
N

NetDigger

#4
Спасибо за ответы. Приведенные функции мне хорошо известны. А вот придумать для демонстрации зачем нужны файберы несколько сложнее. Про управления файберами самим программистом тоже известно.
 
N

NetDigger

#6
Хммм, почему же сервер так тормозит на моей-то выделенке в 256 кбит - господа сделайте что-нибудь уже с этим.А то как всегда вижу замечательные оборванные фразы с процентами в конце...
Повторять придется.
Здравствуйте, уважаемые! Со своей задачей я справился, спасибо как обычно МСДН. Ну а если кому решение также нужно, и начал искать как я не легких путей, отвечу - идите сразу на http://msdn.microsoft.com/library/default....base/fibers.asp и далее по ссылкам. Загляните и на http://www.rsdn.ru - там много таких вопросов.
Спасибо за внимание, уважемые
 
Z

zubr

#7
NetDigger

Так все таки, там где ты Fiber сделал, нитью нельзя было обойтись?
 
N

NetDigger

#8
Мне в принципе надо было лишь продемонстрировать на реальном примере различия между потоком и волокном. Еще конкретнее-нужно было смоделировать как система распределяет время ЦП между потоками на простом случае. Хех, опять идет расхождение в терминах =) Ладно,Fiber - пусть будет волокно (хотя многие переводят как "нить"), Thread -пусть будет потоком=). Приложеньице получилось простецкое, но на его основе будем перетаскивать с никсов некоторые фишки =) Точнее, БУДУТ =)))
Спасибо, уважаемые.
 
N

NetDigger

#9
Мне в принципе надо было лишь продемонстрировать на реальном примере различия между потоком и волокном. Еще конкретнее-нужно было смоделировать как система распределяет время ЦП между потоками на простом случае. Хех, опять идет расхождение в терминах =) Ладно,Fiber - пусть будет волокно (хотя многие переводят как "нить"), Thread -пусть будет потоком=). Приложеньице получилось простецкое, но на его основе будем перетаскивать с никсов некоторые фишки =) Точнее, БУДУТ =)))
Спасибо, уважаемые.
 
Статус
Закрыто для дальнейших ответов.