maison
Top.Mail.Ru Yandeks.Metrika
Forum: "WinAPI";
Archive actuelle: 2004.12.12;
Télécharger: [xml.tar.bz2];

vers le bas

Fibres Trouver des branches similaires


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;
commencer
Form1.Edit1.Text:="???";
fin;

procédure TForm1.Button2Click (Sender: TObject);
var p,p2:pointer;
commencer
p:=nil;
p2:=nil;
ConvertThreadToFiber(p);    
(CreateFiber(0,@f,p2));
SwitchToFiber(p2) ;
fin;

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



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

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



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


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

Aucun.



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]

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



Pages: 1 branche entière

Forum: "WinAPI";
Archive actuelle: 2004.12.12;
Télécharger: [xml.tar.bz2];

à l'étage









Mémoire: 0.86 MB
Heure: 0.084 c
3-1100160717
S @ lik
2004-11-11 11:11
2004.12.12
filtration


3-1100117875
Vitgun
2004-11-10 23:17
2004.12.12
Est-il possible d'utiliser un gureator pour deux déclencheurs?


1-1101368057
Oncle
2004-11-25 10:34
2004.12.12
TwordApplication pour différentes versions de Worda


1-1101481661
Tbutton
2004-11-26 18:07
2004.12.12
édition de fichiers de registre


4-1099228196
aha
2004-10-31 16:09
2004.12.12
question sur l'utilisation de comport -





afrikaans albanais Arabic arménien azerbaïdjanais basque Biélorusse Bulgare catalan Chinois simplifié) Chinois (traditionnel) croate Tchèque Danois Néerlandais English estonien Filipino Finlandais Français
galicien géorgien Allemand Grecque Créole haïtien hébreu Hindi Hongrois Islandais Indonesian irlandais Italien japonais Coréen letton lituanien macédonien Malay maltais Norvégien
persan Polonais Portugais roumain Russe serbe Slovaque Slovène Espagnol Swahili Suédois Thai turc ukrainien Urdu vietnamien gallois yiddish bengali bosniaque
Cebuano espéranto gujarati Hause hmong Igbo Javanais Kannada Khmer lao latin maori Marathi mongol népalais punjabi somali tamil telugu yoruba
zoulou
Английский Français Allemand Italien Португальский Русский Espagnol