Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.29;
Скачать: CL | DM;

Вниз

Наименьшее значение Handle.   Найти похожие ветки 

 
Новичек ©   (2006-01-11 13:44) [0]

Кто-нибудь знает, какое минимальное значение может принять Handle (без учета зарезервированных значений)?


 
Johnmen ©   (2006-01-11 13:48) [1]

Что такое Handle?


 
Новичек ©   (2006-01-11 13:49) [2]

Дескриптор.


 
alex_*** ©   (2006-01-11 13:51) [3]

а зачем тебе оно? Все равно системой назначается


 
Новичек ©   (2006-01-11 14:00) [4]

2alex_***
Имеется ввиду, что конкретный минимум на разных ОС (или на разных машинах) может отличаться?


 
Johnmen ©   (2006-01-11 14:16) [5]

>Дескриптор.

Дескриптор чего?


 
Новичек ©   (2006-01-11 14:22) [6]


> Johnmen
В общем случае - чего угодно.


 
Digitman ©   (2006-01-11 14:24) [7]


> Новичек ©   (11.01.06 14:22) [6]


и зачем знание этого может понадобиться ?


 
Новичек ©   (2006-01-11 14:27) [8]


> Digitman
Например, для отслеживания существования объекта извращенным методом :-)


 
Digitman ©   (2006-01-11 14:32) [9]


> Новичек ©   (11.01.06 14:27) [8]



> извращенным методом


Непосредственным доступом к таблицам дескрипторов что ли ?
А без извращений - это уже не модно ? Или как ?)


 
Новичек ©   (2006-01-11 14:38) [10]


> Digitman
Лень. А строчкой типа
while SomeHadle > MinValue do Application.ProcessMessages;
IMHO, удобней :-)


 
Digitman ©   (2006-01-11 14:41) [11]


> строчкой типа
> while SomeHadle > MinValue do Application.ProcessMessages;
>
> IMHO, удобней


Блажь какая-то ..

Ну и куда сей шедевр программерской мысли вставить ?

Продемонстрируй хотя бы в псевдокоде, чтобы можно было понять, в какой момент и при каких твоих действиях выполнится условие SomeHadle <= MinValue


 
Новичек ©   (2006-01-11 14:44) [12]


> Digitman


 SomeHandle := BeginThread(nil, 0, @SomeFunction, nil, 0, idThread);
 while SomeHadle > MinValue do Application.ProcessMessages;


 
Digitman ©   (2006-01-11 14:48) [13]


> Новичек ©   (11.01.06 14:44) [12]


Ну и где из приведенного фрагмента кода видно, когда и при каких обстоятельствах значение SomeHadle станет меньшим или равным значению MinValue ?


 
Johnmen ©   (2006-01-11 14:49) [14]

>Новичек ©   (11.01.06 14:44) [12]

–2147483648


 
Игорь Шевченко ©   (2006-01-11 14:54) [15]


> какое минимальное значение может принять Handle


4


 
Новичек ©   (2006-01-11 14:56) [16]


> Digitman
Я и сам думал, что при вызове EndThread SomeHandle изменяется. Оказалось - не тут-то было! Он остается прежним! Блин... Развел дискуссию, а зря... Придется по старинке делать.


> Johnmen
Handle не может быть отрицательным.


 
Johnmen ©   (2006-01-11 15:06) [17]

>Новичек ©   (11.01.06 14:56) [16]

Где про это написано? :)

А указанная ф-ия возвращает integer.


 
Новичек ©   (2006-01-11 15:13) [18]


> Johnmen

THandle is the type for handles to operating system resources.

Unit

System

Delphi syntax:

type  THandle = LongWord;

Description

THandle is a 32-bit value that uniquely identifies a resource.

----------------------------------------------------------
Fundamental integer types include Shortint, Smallint, Longint, Int64, Byte, Word, and Longword.

Fundamental integer types  
Type Range Format
Shortint -128..127 signed 8-bit
Smallint -32768..32767 signed 16-bit
Longint -2147483648..2147483647 signed 32-bit
Int64 -2^63..2^63-1 signed 64-bit
Byte 0..255 unsigned 8-bit
Word 0..65535 unsigned 16-bit
Longword 0..4294967295 unsigned 32-bit


 
Digitman ©   (2006-01-11 15:16) [19]


> думал, что при вызове EndThread SomeHandle изменяется


Думать нужно после внимательного прочтения документации.


> Он остается прежним


С какого перепугу содержимое переменной SomeHandle изменится ?

Что ты туда записал, то там и будет лежать вплоть до момента пока ты не запишешь туда новое значение.

А значение хэндла у тебя там лежит или что-то другое - по-барабану.


> Придется по старинке делать


Не "по старинке", а как положено - с использованием ф-ций синхронизации и закрытием хэндла по завершению работы трэда.

Завершение же работы трэда вовсе не означает "смерть" его как объекта - этот объект продолжает существовать вплоть до уменьшения сч-ка ссылок на него до нуля... CloseHandle, кроме всего прочего, как раз и выполняет декремент сч-ка ссылок на ОС-объект (в т.ч. и трэд).


 
Новичек ©   (2006-01-11 15:20) [20]


> Digitman

> CloseHandle, кроме всего прочего, как раз и выполняет декремент
> сч-ка ссылок на ОС-объект (в т.ч. и трэд).
Как я мог забыть эту функцию?!!! Ну, сударь, спасибо! Будете в Новороссийске - с меня пиво.


 
Johnmen ©   (2006-01-11 15:34) [21]

>Новичек ©   (11.01.06 15:13) [18]
>THandle is the type for handles to operating system resources.

Ты же спрашивал про Handle ! А не про THandle !


 
Digitman ©   (2006-01-11 15:43) [22]


> Как я мог забыть эту функцию?


Не столь это страшно .. чревато лишь утечками ресурсов ..

Важней другое - тебе, очевидно, требуется определить момент завершения работы трэд-функции, а это как раз и делается "по старинке", с помощью ф-ций синхронизации


 
Новичек ©   (2006-01-11 15:44) [23]


> Digitman
Да, я пользовался семафором, а лень предложила поискать другой вариант :-)


 
Digitman ©   (2006-01-11 15:46) [24]

На кой ляд здесь семафор - ума не приложу.

Хэндл объекта-треда как раз и есть хэндл того самого объекта синхронизации, что допустим в кач-ве параметра в ф-циях синхронизации


 
Anatoly Podgoretsky ©   (2006-01-11 16:37) [25]

function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord; ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord; var ThreadId: LongWord): Integer;


 
evvcom ©   (2006-01-11 16:53) [26]

On Windows, BeginThread returns the Windows thread handle. A return value of 0 indicates failure.



Страницы: 1 вся ветка

Текущий архив: 2006.01.29;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.03 c
2-1136913141
Lexword
2006-01-10 20:12
2006.01.29
Как скопировать текст?


2-1137027822
MRAk
2006-01-12 04:03
2006.01.29
Icon из exe


15-1136400484
Константинов
2006-01-04 21:48
2006.01.29
Перекодирование DVD


6-1128342790
Stanislav
2005-10-03 16:33
2006.01.29
Список компьютеров в лок. сети


2-1137011269
Majesto
2006-01-11 23:27
2006.01.29
DBGrid