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]

Le principe de fonctionnement des fonctions CreateFiber, ConvertThreadToFiber n'est pas clair.
Lorsqu'ils sont appelés pour une raison quelconque, le pointeur sur la fibre reste égal à nill. S'il vous plaît aider.



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

Vous pouvez lire à ce sujet dans le livre de Richter.

> S'il vous plaît aider.
Et vous avez apporté le code pour que la conversation ne soit pas inutile?

Au fait, pour quelle raison avez-vous eu besoin d'utiliser des fibres?



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

C'est possible, mais il y a des exemples en C ++ et je connais peu ce langage.
En théorie, tout me semble clair, mais en pratique, rien ne fonctionne.

procédure f;
commencer
Form1.Edit1.Text: = "???";
fin;

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

p, p2 reste nul; SwitchToFiber (p2) lève une erreur.



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

Par curiosité, je veux comprendre les nouvelles possibilités qui s'offrent à moi lorsque je les utilise.



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


> Je veux comprendre quelles nouvelles opportunités s'ouvrent lorsqu'elles sont appliquées.

Aucun.



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

À mon avis inexpérimenté, leur utilisation ne présente aucun avantage. comme l'écrit Richter, ils ont été introduits pour faciliter le portage des développements Unix, alors qu'il n'y a pas de support système ni de planification d'exécution comme les threads, le tout à la main.



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

Pourquoi alors les créé?



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

Je le sais, mais si vous le pouvez, expliquez: pourquoi, dans mon exemple, rien ne fonctionne?



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


> pourquoi rien ne fonctionne dans mon exemple?


Et notez par étapes ce que votre exemple devrait faire. Vous pouvez pour vous-même, vous pouvez pour le forum.



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

ConvertThreadToFiber (p); Un flux est associé à une fibre
(CreateFiber (0, @ f, p2)); Une fibre est créée avec la pile mb 1 et un pointeur sur la fonction f
SwitchToFiber (p2); Passer à la fibre sur p2



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


> p, p2 reste nul


Vous avez donc écrit dès le début qu'ils sont égaux à zéro - ils sont donc restés.


> (CreateFiber (0, @ f, p2)); Une fibre est créée avec la pile mb 1.
> et un pointeur sur la fonction f


Lisez la description de la fonction, elle a une valeur de retour. Ce qui est généralement passé à SwitchToFiber.



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

La fonction retourne un longbool, bien que la description indique le contraire. J'ai supposé que le paramètre 3 est variable (p2). Le problème n'est donc pas résolu: (((



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

Lisez la description de la fonction CreateFiber. Lire Richter.



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

J'ai lu Richter et la description ... J'ai lu le jour 3.
Malheureusement, il n’ya pas de réponse à mes questions: (((

La fonction (CreateFiber) renvoie un longbool, bien que la description indique le contraire. J'ai supposé que le paramètre 3 était une variable (p2). Le problème n'est donc pas résolu: (((



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


> Function (CreateFiber) retourne longbool


Hélas, un petit problème à Borland.

Son prototype devait être annoncé comme
function CreateFiber (dwStackSize: DWORD; lpStartAddress: LPFIBER_START_ROUTINE; lpParameter: LPVOID): LPVOID; stdcall;



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

Légèrement aidé:

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

Mais SwitchToFiber (p2); ne passe pas à une fonction, mais met fin à l'application.



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

TOUT ... :))) Il s'est avéré. Merci beaucoup. :)))



Pages: 1 branche entière

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

à l'étage









Mémoire: 0.6 MB
Heure: 0.071 c
10-1070893387
VaS
2003-12-08 17:23
2004.12.12
COM: client et serveur en chute


3-1100522277
lightix
2004-11-15 15:37
2004.12.12
DBF-FILES.CLEANING ET CRÉATION D'UNE CLÉ UNIQUE


14-1101285539
msguns
2004-11-24 11:38
2004.12.12
Seul?


1-1101310115
débogueur
2004-11-24 18:28
2004.12.12
2D FFT


14-1100871323
antonn
2004-11-19 16:35
2004.12.12
Coquillages ...





afrikaans albanais Arabic arménien azerbaïdjanais basque Biélorusse Bulgare catalan Chinois simplifié) Chinois (traditionnel) croate Tchèque Danois Néerlandais Anglais 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