Многопоточные приложения и связанное с ними в Linux, MacOS

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Re: Многопоточные приложения и связанное с ними в Linux, Mac

Сообщение Linus » 21.01.2017 23:04:32

Upd.Upd.
Вообще, тут надо просто отладить, непонятно на каком шаге AV возникает, что при этом в логах, что делает в это время поток который должен разбудиться.

Вангую, что в
Код: Выделить всё
FScheduler^.Suspended
идет попытка разыменовать невалидный указатель. Вообще, непонятно зачем здесь использовать указатель на класс, ведь он сам и есть указатель. Тогда уж проверку выше на nil надо не только FSheduler, а еще и FSheduler^ ставить.

Это нужно обязательно проверить
[Дополнение]
Действительно, на такую мелочь и внимания не обращал. Все заработало.

плюс код присваивания FSheduler
Код: Выделить всё
procedure TTaskScheduler.CreateTaskThread(TaskItem:TTaskItemPTR; AwakeMe:boolean); //not tested
var
   NewTask:TTaskThread;
   Delay:Longint;
begin
  NewTask:=TTaskThread.Create(true);
  NewTask.FreeOnTerminate:=FALSE;
  NewTask.AwakeScheduler:=AwakeMe;
  NewTask.TaskItem:=TaskItem;
  NewTask.FScheduler:=@Self;  //<-
....
  NewTask.Delay:=Delay;
  NewTask.Start;


Всем спасибо. :D
Linus
новенький
 
Сообщения: 47
Зарегистрирован: 11.01.2013 22:01:28

Пред.

Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1

Рейтинг@Mail.ru