Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Fiber   Найти похожие ветки 

 
Scorpion   (2004-10-30 15:56) [0]

Не ясен принцип работы функций CreateFiber,ConvertThreadToFiber.
При их вызове почему то указатель на файбер остается равен nill . Пожалуйста , помогите.


 
MBo ©   (2004-10-30 16:15) [1]

Почитать об это можно в книге Рихтера.

>Пожалуйста , помогите.
А ты код привел, чтобы разговор был не беспредметным?

Кстати, по какой причине тебе понадобилось использовать именно Fibers?


 
Scorpion   (2004-10-30 16:36) [2]

Можно , но примеры там на С++ , а я c этим языком мало знаком.
В теории мне вроде все понятно , но на практике ничего не работает.

procedure f;
begin
Form1.Edit1.Text:="???";
end;

procedure TForm1.Button2Click(Sender: TObject);
var p,p2:pointer;
begin
p:=nil;
p2:=nil;
ConvertThreadToFiber(p);    
(CreateFiber(0,@f,p2));
SwitchToFiber(p2) ;
end;

p,p2 остаются nil ; SwitchToFiber(p2) выдает ошибку.


 
Scorpion   (2004-10-30 16:45) [3]

Из любопытства.Хочу понять какие новые возможности открываются при их применение.


 
DiamondShark ©   (2004-10-30 17:02) [4]


> Хочу понять какие новые возможности открываются при их применение.

Никакие.


 
MBo ©   (2004-10-30 17:11) [5]

на мой неискушенный взгляд, никакой пользы от их использования нет. как пишет Рихтер, введены они для удобства портирования юниксных наработок, при этом системной поддержки, планирования выполнения подобно потокам нет - все руками.


 
Scorpion   (2004-10-30 17:13) [6]

Зачем тогда их создавали?


 
Scorpion   (2004-10-30 17:17) [7]

Я это знаю.Тем не менее ,если можешь, пожалуйста объясни : почему в моем примере ничего не работает?


 
Игорь Шевченко ©   (2004-10-30 17:22) [8]


> почему в моем примере ничего не работает?


А ты по шагам распиши, что твой пример должен делать. Можешь для себя, можешь для форума.


 
Scorpion   (2004-10-30 17:32) [9]

ConvertThreadToFiber(p); Поток ассоциируется с файбером    
(CreateFiber(0,@f,p2));  Создается файбер со стеком 1 мб и указателем на функцию f
SwitchToFiber(p2) ;      Осуществляется переход на файбер по адресу p2


 
Игорь Шевченко ©   (2004-10-30 18:24) [10]


> p,p2 остаются nil


Так ты написал в самом начале, что они равны nil - вот они и остались.


> (CreateFiber(0,@f,p2));  Создается файбер со стеком 1 мб
> и указателем на функцию f


Почитай описание функции, у нее есть возвращаемое значение. Которое обычно и передается в SwitchToFiber.


 
Scorpion   (2004-10-30 21:35) [11]

Функция возвращает longbool , хотя в описание написано иное.Я предположил что 3 параметр переменный(p2).Так что проблема не решена:(((


 
Игорь Шевченко ©   (2004-10-30 22:26) [12]

Почитай описание фукнции CreateFiber. Почитай Рихтера.


 
Scorpion   (2004-10-30 22:32) [13]

Почитал и Рихтера и описание...3 день читаю .
Ответов на мои вопросы там к сожалению нет: (((

Функция(CreateFiber) возвращает longbool , хотя в описание написано иное.Я предположил что 3 параметр переменный(p2).Так что проблема не решена:(((


 
Игорь Шевченко ©   (2004-10-30 22:51) [14]


> Функция(CreateFiber) возвращает longbool


Увы, глюк у Borland.

Ее прототип должен был объявлен, как
function CreateFiber(dwStackSize: DWORD; lpStartAddress: LPFIBER_START_ROUTINE;
 lpParameter: LPVOID): LPVOID; stdcall;


 
Scorpion   (2004-10-30 23:17) [15]

Слегка помогло :

p:=nil;
p2:=nil;
p4 :=GetFiberData;
p5:=GetFiberData;
p:=ConvertThreadToFiber(p4);
p2:=CreateFiber(0,@f,p5);
SwitchToFiber(p2);

Но SwitchToFiber(p2); не переходит на функцию ,a завершает приложение.


 
Scorpion   (2004-10-30 23:28) [16]

ВСЕ...:))) Получилось.Большое вам спасибо.:)))



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
1-1101366227
Denmin
2004-11-25 10:03
2004.12.12
Как передать фокус из DBEdit на SpeedButton, из DBMemo в DBEdit ?


4-1098854639
Shura
2004-10-27 09:23
2004.12.12
Привилегии WindowsXP и MailSlot


14-1100809808
OneFragLeft
2004-11-18 23:30
2004.12.12
Про винты.


1-1101742930
Serjio+
2004-11-29 18:42
2004.12.12
печать наклеек на TLP 2824


14-1101284601
fag2000
2004-11-24 11:23
2004.12.12
Линейное программирование - библиотека с открытыми кодами