Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.058 c
4-1099032189
Grundic
2004-10-29 10:43
2004.12.12
"Подсветка" свернутого окна - как?


3-1100246373
a_tereshin
2004-11-12 10:59
2004.12.12
Как получить список доступных алиасов


1-1101885164
opoloXAI
2004-12-01 10:12
2004.12.12
Как распечатать TStrings в три столбика?


1-1101491736
AlexHawk
2004-11-26 20:55
2004.12.12
Как сделать титры


14-1101020589
Sour
2004-11-21 10:03
2004.12.12
SMTP и POP3 серверы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский