Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "WinAPI";
Поточний архів: 2004.12.12;
Завантажити: [xml.tar.bz2];

Вниз

Волокно Знайти схожі гілки


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;
починати
Form1.Edit1.Text:="???";
end;

procedure TForm1.Button2Click (Sender: TObject);
var p,p2:pointer;
починати
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 вся гілка

Форум: "WinAPI";
Поточний архів: 2004.12.12;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.6 MB
Час: 0.12 c
1-1101783419
змій
2004-11-30 05:56
2004.12.12
файл в каталозі з * .exe


1-1101545019
Ало
2004-11-27 11:43
2004.12.12
можна отримати елемент set а по рядку?


1-1101416797
Bobby Digital
2004-11-26 00:06
2004.12.12
Помилка при виконанні


14-1100903958
123
2004-11-20 01:39
2004.12.12
C#


3-1100521248
SAndre
2004-11-15 15:20
2004.12.12
SQLOLE Як отримати найменування стовпців запиту?





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська