Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMonitor. Object lock not owned / 8 сообщений из 8, страница 1 из 1
26.10.2018, 16:23
    #39723635
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
Delphi 10.2.2 Linux

Дорогие форумчане, есть такой код. Вот при каких условиях может возникнуть ошибка?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 if realD = nil then exit;
        try
          TMonitor.Enter(realD, TIME_OUT_CS);
          TRY
            try
              if realD.ContainsKey(Dkey) then
              begin
                realD.remove(Dkey);
                isKeyFound := True;
              end
              else
                isKeyFound := false;
              realD.Add(Dkey, Value);
            except
              on E: exception do err := E.Message;
            end;
          FINALLY
            TMonitor.Exit(realD);
          END;
...
Рейтинг: 0 / 0
26.10.2018, 16:47
    #39723665
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
Изменяется значение realD
...
Рейтинг: 0 / 0
26.10.2018, 17:01
    #39723684
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
_Vasilisk_,
Оно изменяется, но не в промежутке же или может?
TMonitor.Enter(realD, TIME_OUT_CS);
....
TMonitor.Exit(realD);
...
Рейтинг: 0 / 0
26.10.2018, 17:03
    #39723686
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
Блин, скорее всего TimeOut ожидания монитора превышен и он пытается выполнить exit в finally

З.Ы. Пятница((
...
Рейтинг: 0 / 0
26.10.2018, 17:47
    #39723718
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
cptngrbОно изменяется, но не в промежутке же или может?Зависит от того, что это за переменная и имеют ли к ней доступ другие потоки.
cptngrbБлин, скорее всего TimeOut ожидания монитора превышен и он пытается выполнить exit в finallyТоже возможно
...
Рейтинг: 0 / 0
26.10.2018, 18:16
    #39723734
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
Другие потоки тоже имеют к ней доступ через такой же механизм
...
Рейтинг: 0 / 0
27.10.2018, 00:28
    #39723822
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
cptngrb,
TMonitor.Enter в данной модификации это функция, и её результат надо проверять
Код: pascal
1.
class function Enter(const AObject: TObject; Timeout: Cardinal): Boolean; overload; static;
...
Рейтинг: 0 / 0
29.10.2018, 10:01
    #39724289
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMonitor. Object lock not owned
kealon(Ruslan), точно
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMonitor. Object lock not owned / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]