Сейчас на форуме: hgdagon, asfa (+4 невидимых)

 eXeL@B —› Программирование —› fibers
Посл.ответ Сообщение

Ранг: 108.7 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 08 февраля 2007 05:32
· Личное сообщение · #1

Ничего не могу понять. На Си пример есть, а как это будет в invoke - хз.
Создаю поток
invoke CreateThread,0,0,init_fliberM, 0, 0, 0
init_fliberM объявлен как init_fliberM PROTO
Функции под фиберы - fiber1(до 5) PROTO
Код:

init_fliberM proc
invoke ConvertThreadToFiber, NULL
invoke CreateFiber,0,SADD("fiber1"),NULL
mov fibers1, eax
invoke CreateFiber,0,SADD("fiber2"),NULL
mov fibers2, eax
invoke CreateFiber,0,SADD("fiber3"),NULL
mov fibers3, eax
invoke CreateFiber,0,SADD("fiber4"),NULL
mov fibers4, eax
invoke CreateFiber,0,SADD("fiber5"),NULL
mov fibers5, eax
invoke SwitchToFiber,addr fibers1
ret
init_fliberM endp

Весь код выше вроде работает (CreateFiber возвращает не нулевые значения), а вот этот SwitchToFiber, тупит, непонятно, что ему нужно передавать - DWORD fibers1, имя функции-фибера "fiber1", или ещё что! Подскажите кто знает...



Ранг: 200.3 (наставник)
Активность: 0.090
Статус: Участник

Создано: 08 февраля 2007 05:42
· Личное сообщение · #2

Ему надо передать адрес фибера, на который будет переключение (из справки)

-----
Само плывет в pуки только то, что не тонет.




Ранг: 108.7 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 08 февраля 2007 06:12
· Личное сообщение · #3

? и как же это в коде?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 февраля 2007 06:30
· Личное сообщение · #4

invoke SwitchToFiber,addr fiber1 наверно



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

Создано: 15 февраля 2007 08:24 · Поправил: RamMerlabs
· Личное сообщение · #5

Кажется там так и написано...

Попробуй без addr, просто переменная




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 15 февраля 2007 08:27
· Личное сообщение · #6

invoke SwitchToFiber,fiber1
Ведь CreateFiber возвращает адрес фибера, его-то и надо указывать.



Ранг: 108.7 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 15 февраля 2007 15:16
· Личное сообщение · #7

указывал, слетаю на исключении в ntdll


 eXeL@B —› Программирование —› fibers
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати