powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Топик дурацких вопросов
25 сообщений из 28, страница 1 из 2
Топик дурацких вопросов
    #39345663
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос 1: Как проверить наличие мьютекса, не увеличивая количество его пользователей
Код: pascal
1.
2.
3.
4.
5.
function IsMutexExists(const aMutexName : string): Boolean;
begin
  CloseHandle(OpenMutex(MUTEX_ALL_ACCESS,false,PChar(aMutexName)));
  Result := GetLastError = ERROR_SUCCESS;
end;



- очень криво?
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345678
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ты же тут увеличиваешь кол-во пользователей? Не?
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345683
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать DuplicateHandle() с параметром DUPLICATE_CLOSE_SOURCE
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345684
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовать его создать?
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345713
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57Так ты же тут увеличиваешь кол-во пользователей? Не?
Ну, я же и уменьшаю, не?
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345717
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochпопробовать его создать?
Не, страшно. А вдруг создастся?

Нужно проверить наличие. Если нет - не создавать. Если есть - тем более не создавать.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345722
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийможно попробовать DuplicateHandle() с параметром DUPLICATE_CLOSE_SOURCE

Э... а исходный хэндл - где взять?

Нужно по имени проверять. :)
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345782
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДНе, страшно. А вдруг создастся?

удалишь
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345784
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AriochчччДНе, страшно. А вдруг создастся?

удалишь
если не создавать, то и удалять не придётся.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345790
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запускаем SysInternal WinObj
заходим в папки \, \KernelObjects, \BAseNAmedObjects
сортируем объекты по типу
находим тип "Mutant"
и просматриваем имена объектов данного типа

https://technet.microsoft.com/en-us/sysinternals/winobj
https://en.wikipedia.org/wiki/Object_Manager_(Windows)

------------

я другого не пойму, на кой черт тебе это надо?

ну допустим пошарилд ты по углам, убедился что вот-прямо-сейчас такого мьютекса нет

и что тебе это даст?
может быть прямо в эту саму секунду параллельные процесс его создает и вот-вот закончит создание.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345848
Вот-вот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch, +1
А может такое случиться, что вот есть мутекс.
Но еще буквально через пару тактов процессора его уже и нет?
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345881
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот-вотArioch, +1
А может такое случиться, что вот есть мутекс.
Но еще буквально через пару тактов процессора его уже и нет?

Я ж не борюсь за ресурсы.
Мне просто любопытно. :)
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345897
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

If the mutex is a named mutex and the object existed before this function call, the return value is a handle to the existing object, GetLastError returns ERROR_ALREADY_EXISTS, bInitialOwner is ignored, and the calling thread is not granted ownership. However, if the caller has limited access rights, the function will fail with ERROR_ACCESS_DENIED and the caller should use the OpenMutex function.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39345903
Товарищ младший сержант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeliusчччД,

If the mutex is a named mutex and the object existed before this function call, the return value is a handle to the existing object, GetLastError returns ERROR_ALREADY_EXISTS, bInitialOwner is ignored, and the calling thread is not granted ownership. However, if the caller has limited access rights, the function will fail with ERROR_ACCESS_DENIED and the caller should use the OpenMutex function.
И чё? :)
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39357304
Товарищ младший сержант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД Вопрос 1: Как проверить наличие мьютекса, не увеличивая количество его пользователей
Код: pascal
1.
2.
3.
4.
5.
function IsMutexExists(const aMutexName : string): Boolean;
begin
  CloseHandle(OpenMutex(MUTEX_ALL_ACCESS,false,PChar(aMutexName)));
  Result := GetLastError = ERROR_SUCCESS;
end;



- очень криво?
Очень. При несброшенном значении LastError, в случае, когда мьютекс существует и доступен, GetLastError вернет это самое старое значение.

Вот так получше:
Код: pascal
1.
2.
3.
4.
function IsMutexAccesible(const aMutexName: string): Boolean;
begin
 Result := CloseHandle(OpenMutex(MUTEX_ALL_ACCESS, false, PChar(aMutexName)));
end;
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #39470584
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос №2: Сия функция -

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function zclock_time(): Int64;
var
  fFT: TFileTime;
  fULI: ULARGE_INTEGER;
begin
  GetSystemTimeAsFileTime(fFT);
  CopyMemory(@fULI, @fFT, SizeOf(ULARGE_INTEGER));
  Result := fULI.QuadPart div Int64(10000);
end;



- не вызывает ли дурацких вопросов?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Топик дурацких вопросов
    #40054874
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то торможу.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
  TIntegers = array of Integer;
  pIntegers = ^TIntegers;

var
  fpI : pIntegers;
begin

  New(fPI);
  SetLength(fPI^, 3);
  fPI^[0] := 1;
  fPI^[1] := 2;
  fPI^[2] := 3;


Вопрос: как освободить память?
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40054876
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точно торможу. :)
Вот так надо:
ъъъъъ

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
type
  TIntegers = array of Integer;
  pIntegers = ^TIntegers;

var
  fpI : pIntegers;
begin

  New(fPI);
  SetLength(fPI^, 3);
  fPI^[0] := 1;
  fPI^[1] := 2;
  fPI^[2] := 3;

  fPI^ := nil;
  FreeMemory(fPI);



...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40054877
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

Dispose(fPI) должно хватить, по идее. Ну SetLength(fPI^, 0) перед этим, если хочется сверхнадёжности.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40054878
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer,

точно, спасибо!
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40054881
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Вот так надо:

Я бы не стал ломать пары New/Dispose и GetMem/FreeMem. Технически оно, конечно, можно, но кроме дополнительных проблем ничего не даст.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40054882
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...спать надо больше.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40128593
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как увеличить скорость считывания структуры каталогов?

Считывание данных о 1000 (одна тысяча) файлов занимает примерно 1 секунду. Повторное сканирование той же структуры занимает всё равно 1 секунду.
Используются методы Windows: FindFirstFile() - {FindNextFile()} - FindClose(). Ну или методы для рекурсивного вспомогательных библиотек, в которых все равно используются FindFirstFile() - {FindNextFile()} - FindClose()...

1 секунда на 1000 файлов - это долго.
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40128594
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

обойтись без повторного считывания? ReadDirectoryChangesW?
...
Рейтинг: 0 / 0
Топик дурацких вопросов
    #40128598
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
...ReadDirectoryChangesW?

Блин, так не хочется.
А придется, наверное.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Топик дурацких вопросов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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