Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Наименьшее значение Handle. [D7, XP]


Страницы:   1 2

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

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


evvcom   (2006-01-11 16:53:00) [1]

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


Anatoly Podgoretsky   (2006-01-11 16:37:00) [2]

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


Digitman   (2006-01-11 15:46:00) [3]

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

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


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


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


Digitman   (2006-01-11 15:43:00) [5]


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


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

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


Johnmen   (2006-01-11 15:34:00) [6]

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

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


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


> Digitman

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


Digitman   (2006-01-11 15:16:00) [8]


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


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


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


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

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

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


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


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

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


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


> 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


Johnmen   (2006-01-11 15:06:00) [10]

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

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

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


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


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


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


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


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


4


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

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

–2147483648


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


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


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


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


> Digitman


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


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


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


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

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

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


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


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


Digitman   (2006-01-11 14:32:00) [18]


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



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


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


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


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


Digitman   (2006-01-11 14:24:00) [20]


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


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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо