Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#16: 2009-06-29 09:03:40 ЛС | профиль | цитата
nesco писал(а):
По-хорошему, надо было список мьютексов сделать, которые будут синхронизировать разные потоки

АФИГЕТЬ

Нет слов. Одни мысли... И все - нецензурные. RTFM
карма: 9

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#17: 2009-06-29 09:39:19 ЛС | профиль | цитата
Galkov писал(а):
Нет слов. Одни мысли... И все - нецензурные

ну ты бы конструктивно описал -- в чем проблема-то, а то сразу "Афигеть". А это меня маразм ночной посетил, да и не обдумывал я его толком
------------ Дoбавленo в 09.41:
Да, а что такое RTFM, не в курсе я
карма: 22

0
Ответов: 2125
Рейтинг: 159
#18: 2009-06-29 10:41:08 ЛС | профиль | цитата
nesco писал(а):
Да, а что такое RTFM, не в курсе я

google в помощь
карма: 1

0
Ответов: 373
Рейтинг: 108
#19: 2009-06-29 11:38:18 ЛС | профиль | цитата
nesco,
Ну это ты зря. Не стоило делать меньше 10

---------------------
Минимальные тайминги "Angry IP Scanner 2.20"
Timer delay: 5ms
Max threads: 1000
Ping timeout: 500ms
Ping count: 1
ByteCount=?
---------------------
Сделал такие же кроме Timer delay
WaitObject=10ms, потоки=1ms, ByteCount=1. Сканирует ~ в 2-4 раза быстрей и процессор в 2-3 раза меньше напрягает.
-
Может есть какое нибудь сообщение окну (WM_...), что-бы процесс освобождал не используюмую память
----\\\\\\\\\\\
мда...у меня же WaitObject привязан к Events. Значит задержка 1ms.
но если поток=10ms всё равно быстрее.
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#20: 2009-06-29 11:50:22 ЛС | профиль | цитата
tsdima писал(а):
google в помощь

Понятно, что это такое. Ну почитал я Маркса, то бишь Рихтера, он там замутил сюжет с клиент-серверными потоками. В принципе, структура понятна, только -- во то надо ли оно нам, такие навороты
Хотя, может и надо подумать над реализацией
карма: 22

0
Ответов: 373
Рейтинг: 108
#21: 2009-06-29 12:23:34 ЛС | профиль | цитата
nesco,
объясни вразумительно, зачем вот такая связка, если ты ее поставил
Наверное это что-то вроде пула потков
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#22: 2009-06-29 13:07:16 ЛС | профиль | цитата
Vlad.- писал(а):
это что-то вроде пула потков

Мдаа... Уж
карма: 22

0
Ответов: 9906
Рейтинг: 351
#23: 2009-06-29 15:13:37 ЛС | профиль | цитата
Vlad.- писал(а):
здесь всё верно?

Нет
Но это уже не особенно и важно.
Отъедание памяти - обыкновенное дело, как мне кажется.
Если внутри кодов doPing позволять себе GetMem, и выходы мимо FreeMem...
Элементы палитры, связанные с интернетом, я не трогал... Поскольку это как раз тот вопрос, в котором я не очень разбираюсь.


2nesco
под Чтением, не имелось в виду нахождение знакомых буковок в тексте (я очень сильно пытаюсь употреблять только цензурные слова)

Защита ресурса осуществляется примерно так
code_13929.txt

Таких процессов или потоков (каждый со своими "командами") можно запускать хоть десятки, и они не будут мешать друг-другу.
И для защиты нужны лишь 3 строчки кода в методе doSafeWork.
И все.
И не нужно больше ничего.
И про потоки вообще никто не вспоминал в коде.
И каждому защищаемому ресурсу соответствует одно имя мьютекса.
И все это в букварях прекрасно описано.
И понятие мьютекса уже давно стало межплатформенным, характеризующим технологию синхронизации, а не конкретное winAPI. Уже и в Wiki попало даже.
И эти 3 строчки кода - это то, зачем он и придумывался.

Все. Цензурные слова кончились.
карма: 9

0
файлы: 1code_13929.txt [2.9KB] [322]
Разработчик
Ответов: 26304
Рейтинг: 2146
#24: 2009-06-29 15:27:29 ЛС | профиль | цитата
Galkov писал(а):
Если внутри кодов doPing позволять себе GetMem, и выходы мимо FreeMem...

Нашел уже и исправил.
карма: 22

0
Ответов: 2125
Рейтинг: 159
#25: 2009-06-29 15:29:34 ЛС | профиль | цитата
Galkov писал(а):
Если внутри кодов doPing позволять себе GetMem, и выходы мимо FreeMem

... и при этом делать WSAStartup и не делать WSACleanup.
карма: 1

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#26: 2009-06-29 15:49:28 ЛС | профиль | цитата
Galkov писал(а):
Защита ресурса осуществляется примерно так

И где ты раньше был
------------ Дoбавленo в 15.55:
tsdima писал(а):
... и при этом делать WSAStartup и не делать WSACleanup

Это означает, что WSACleanup надо добавить в секцию FINALLY, правильно я понял
карма: 22

0
Ответов: 9906
Рейтинг: 351
#27: 2009-07-22 20:45:41 ЛС | профиль | цитата
Имел счастье наблюдать новый элемент SafeMode
И это было бы очень смешно, если бы не было так грустно

В чем отличия от вышеприведенного IC Оказывается в том, что добавлено несколько ГЛУПОСТЕЙ
  • Введено св-во Delay (почему не TimeOut - тайна сия велика есть), которое к тому же и НЕ работает
  • Имя мьютекса дополнено PID-ом. Надо полагать, чтобы работало только в одном процессе. Защищать ресурс из разных процессов - не судьба, видимо. А то что для таких целей надо использовать критическую секцию (которая, аналогично - специально для этого и сделана, и поэтому более эффективна) - такие буквы из учебников знакомыми не являются, надо полагать
  • Конструирование мьютекса сделано отложенным. Зачем-то. Наверное только для того, чтобы продемонстрировать свое знание сей продвинутой техники. Ибо она снижает эффективность кода, а ни одного положительного качества, в данном случае - не привносит.
    Обидно за Проект, однако... Если в нем остались только такие developer-ы
  • карма: 9

    0
    Разработчик
    Ответов: 26304
    Рейтинг: 2146
    #28: 2009-07-22 21:13:04 ЛС | профиль | цитата
    Galkov писал(а):
    Введено св-во Delay (почему не TimeOut - тайна сия велика есть), которое к тому же и НЕ работает

    Лучше читай литературу, тогда ясно будет

    И оставь свои мнения при себе. Умник, млин...
    карма: 22

    0
    Администрация
    Ответов: 15295
    Рейтинг: 1519
    #29: 2009-07-22 22:19:55 ЛС | профиль | цитата
    Galkov писал(а):
    Введено св-во Delay (почему не TimeOut - тайна сия велика есть), которое к тому же и НЕ работает

    тут вообще-то надо убирать все циклы и делаи и давать пользователю событие onWaitFailed (это когда результат не равен WAIT_OBJECT_0)

    Galkov писал(а):
    Имя мьютекса дополнено PID-ом.

    да, это лишнее

    Galkov писал(а):
    Конструирование мьютекса сделано отложенным. Зачем-то. Наверное только для того, чтобы продемонстрировать свое знание сей продвинутой техники.

    затем, что на момент Create не доступно _prop_Name => пришлось бы вставлять property на имя => с точки зрения кода реализация получилась бы гораздо навороченнее по объему кода, но зато быстрее на одну команду процессора при вызове doSafeMode. Поэтому притензия тут не уместна совершенно.

    в обоих реализациях отсутствует вызов унаследованного деструктора - это надо исправить.
    карма: 27
    0
    Разработчик
    Ответов: 26304
    Рейтинг: 2146
    #30: 2009-07-22 22:45:35 ЛС | профиль | цитата
    Dilma писал(а):
    тут вообще-то надо убирать все циклы и делаи и давать пользователю событие onWaitFailed (это когда результат не равен WAIT_OBJECT_0)

    Возник вопрос -- почему я вставил именно такой цикл, а не сделал INFINITY ожидание, как в IC Galkova, а только потому, INFINITY оказался не бесконечный цикл в мультипроцессорных системах (проверено именно сначала на IC). Те, после определенного времени WaitForSingleObject вываливался, освобождая доступ к данным, откуда я и поставил проверку на WAIT_OBJECT_0. И претензий к _prop_Delay я тоже не понял, поставь -1 и будет тебе INFINITY

    Хорошо, как предполагается конкретная реализация данного метода

    Dilma писал(а):
    да, это лишнее

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


    карма: 22

    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)