Главная страница
    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.47 MB
Время: 0.041 c
1-1101781291
dolphin
2004-11-30 05:21
2004.12.12
пользовательский класс >>перегрузка базовых процедур


1-1101515434
Sirakuz
2004-11-27 03:30
2004.12.12
Delphi 8: TBytes ??


1-1101886141
markers
2004-12-01 10:29
2004.12.12
База данных


1-1101586208
musicman
2004-11-27 23:10
2004.12.12
Перекодирование из ANSI в OEM русского текста


3-1100074594
Serguar
2004-11-10 11:16
2004.12.12
Медленное открытие таблицы Paradox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский