Модераторы: Partizan, gambit

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Как добиться простоя в 1 МИКРОсекунду? 
:(
    Опции темы
Benassi
  Дата 3.4.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



Читал про QueryPerformanceFrequency, QueryPerformanceCounter, но ничего полезного из этого не вышло.

Код моего таймера на C# для данного простоя таков, что эти самые микросекунды нормально отсчитываются в огромных кол-вах... вот, собственно, и код:

Код

    public class PerfCounter
    {
        Int64 freq = 0;
        Int64 _start = 0;
        Int64 finish = 0;

        public PerfCounter()
        {
            Clear();
        }

        void Clear()
        {
            QueryPerformanceFrequency(ref freq);
            freq = (long)(freq/(1000000));
        }


        public void wait(int mks)
        {
            Clear();
            freq = freq*mks;
            QueryPerformanceCounter(ref _start);
            while ((finish-_start)< freq) QueryPerformanceCounter(ref finish);
//            for (int i=0; i< mks; i++) LPTWorker.LPTIn(888);
        }

        [DllImport("Kernel32.dll")]
        static extern bool QueryPerformanceCounter(ref Int64 performanceCount);

        [DllImport("Kernel32.dll")]
        static extern bool QueryPerformanceFrequency(ref Int64 frequency);
    }
}


P.S. не советуйте, пожалуйста QNX и т.п., мне нужно считывать данные с LPT с минимальным простоем между запросами 4 мкс (Win9x/NT), переключение между процессами блокирую так:
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
Один не очень авторитетный программист сказал, что запрос на чтение данных с LPT занимает 1 мкс, во что я не очень верю. Пробовал Thread.Sleep(new TimeSpan(1000)) , но в MSDN прочел, что малые простои игнорируются, и это будет как Sleep(0), но и это лишь гарантия минимального простоя, максимальный при этом неизвестен, к тому же таймер посылает сообщения лишь каждые 55 мс(насколько помню)... внешние устройства пожалуйста тоже не советуйте, только программно. СПАСИБО. -> может можно както более грамотно создать dll на с++ и импортировать...
PM MAIL   Вверх
Lazin
Дата 3.4.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: нет
Всего: 154



Sleep(0) - не игнорируется, это просто переключение контекста, вообще, ОС с вытесняющей многозадачностью для вашей задачи не очень здорово подходит =)
PM MAIL Skype GTalk   Вверх
bsa
Дата 3.4.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



Benassi, а ты разделом не ошибся? С# тут вроде как не очень обсуждают. Тебе лучше в .NET обратиться. Хотя, думаю, тебе и там не помогут.
PM   Вверх
Lazin
Дата 3.4.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: нет
Всего: 154



Только-что обратил внимание, 
Цитата

в 1 МИКРОсекунду

АФАИК это вообще невозможно =)
PM MAIL Skype GTalk   Вверх
JackYF
Дата 3.4.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(Lazin @  3.4.2008,  10:50 Найти цитируемый пост)
АФАИК это вообще невозможно =)

Ну, в юниксах есть msleep, и даже nanosleep smile. Но это юниксы. В виндах - сложнее smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
korian
Дата 3.4.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



в винде это тоже возможно (WaitFor... + Eventы), но т.к. что Win, что nix - это ОС с вытесняющей многозадачностью, гарантируется только то, что поток будет спать не меньше указанного времени.
PM   Вверх
Lazin
Дата 3.4.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: нет
Всего: 154



Цитата(korian @  3.4.2008,  15:13 Найти цитируемый пост)
в винде это тоже возможно (WaitFor... + Eventы)

просвети пожалуйста как, Wait функции принимают милисекунды, а нужно микро
на точность менее чем 50 микросекунд рассчитывать не стоит из-за архитектуры ОС

Добавлено через 8 минут и 1 секунду
можно почитать здесь
PM MAIL Skype GTalk   Вверх
korian
Дата 3.4.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Цитата(Lazin @  3.4.2008,  14:23 Найти цитируемый пост)
просвети пожалуйста как, Wait функции принимают милисекунды, а нужно микро

че-та я уже запутался...
милисекунда это 1/1000
микро это 1/1000000
а наносекунда это скока?
организовать вэйт можно до сотен наносекунд... сейчас поищу...

Это сообщение отредактировал(а) korian - 3.4.2008, 16:14
PM   Вверх
MAKCim
Дата 3.4.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(JackYF @  3.4.2008,  14:59 Найти цитируемый пост)
Ну, в юниксах есть msleep, и даже nanosleep smile. Но это юниксы. В виндах - сложнее

сам вызов системного сервиса может занять и того больше времени

даже теоретические расчеты показывают, что это невозможно
возьмем, к примеру, двуядерный процессор C2D с пиковой частотой ядра ~2.5Ghz
2.5 * 2 ^ 30 тактов в секунду = 2.5 * 2 ^ 30 / 1 * 10 ^ 6 ~ 2684 тактов в микросекунду
в среднем за такт выполняется 4 микрооперации => за микросекунду может выполниться ~671 микроопераций
усредненное количество микроопераций в одной инструкции ~3 => за одну микросекунду в среднем выполнится 223 инструкции
а теперь рассмотрим путь от вызова nanoslepp()/msleep() до запуска таймера
количество инструкций в разы превышает число 223 (можете проверить)
кроме того, есть еще кэш-промахи, работа MMU, штрафы за непредугаданные переходы и т. д
все это значительно уменьшает реальное количество инструкций, которые могут быть выполнены за 1 мк

если даже предположить, что время выполнения всех инструкций до запуска таймера значительно меньше 1 мк, то тут возникает другая проблема: что делать со временем, которое понадобится для обработки аппаратного прерывания, возможного перевода процесса в состояние готовности, ожидания выбора его планировщиком, перключение контекста и возврат на третье кольцо?

Добавлено @ 16:15
Цитата(korian @  3.4.2008,  16:10 Найти цитируемый пост)
а наносекунда это скока?

10^-9

Это сообщение отредактировал(а) MAKCim - 3.4.2008, 16:16


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
korian
Дата 3.4.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



вот пример, там правда ожидают 100000000 сотен наносекунд (10 секунд). кароче деление 100 наносекунд.
http://msdn2.microsoft.com/en-us/library/m...008(VS.85).aspx

Это сообщение отредактировал(а) korian - 3.4.2008, 16:26
PM   Вверх
Lazin
Дата 3.4.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: нет
Всего: 154



если точность указывается до 0.1us, это не значит, что реально она соблюдается, вряд ли можно сделать так, что-бы какой-то твой код на современном железе отрабатывал с частотой 1 MHz =)
для этого есть DSP процессоры
PM MAIL Skype GTalk   Вверх
JackYF
Дата 3.4.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



MAKCim, хорошо, верю, но на кой фиг тогда сделали nanosleep? более того, вызовы sleep и msleep, кажется, просто вызывают nanosleep, не так ли? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Benassi
  Дата 3.4.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



Господа, таймер виндовс посылает сообщения системе 1 раз в 55 милисекунд, то есть если я захочу добиться простоя в цикле 1000 раз по микросекунде, это будет гораздо больше. Мне не нужно переключение между процессами, нааборот, моя программа работает с приоритетом реалтайм,
может кто-нибудь может выложить функцию, проверенную им, не содержащую Sleep(0)?

Хотелось бы рассчитать функцию wait(microseconds), которая зависела бы от процессора, используя RDTSC или QueryPerformance, минимальный простой (не Sleep а while();) у меня должен быть 4 микросекунды.

Цитата

вот пример, там правда ожидают 100000000 сотен наносекунд (10 секунд). кароче деление 100 наносекунд.
http://msdn2.microsoft.com/en-us/library/m...008(VS.85).aspx


Минимальные простои игнорируются(читайте выше), хочется зависеть от апи.
PM MAIL   Вверх
korian
Дата 3.4.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Цитата(Lazin @  3.4.2008,  15:47 Найти цитируемый пост)
если точность указывается до 0.1us, это не значит, что реально она соблюдается, вряд ли можно сделать так, что-бы какой-то твой код на современном железе отрабатывал с частотой 1 MHz =)

это понятно, об этом писалось выше и не одним человеком... скажем так, точность в том, что если ждать надо (1 секунду + 500 наносекунд) - то точности можно добиться. хотя всеравно нельзя, т.к. ОС с вытесняющей многозадачностью. (можно поидее, если поток реалтайм и других реалтайм потоков нету + еще устройства не посылают прерываний smile  и еще многа чего)

Цитата(Benassi @  3.4.2008,  15:55 Найти цитируемый пост)
Минимальные простои игнорируются(читайте выше), хочется зависеть от апи. 

извените конечно, но таймер по Sleep и WaitableTimer это две большие разницы.

Добавлено @ 17:24
и while(); от WaitableTimer сильно отличаться не будет, даже если вы найдете вариант посчитать количество итераций для while.
но гарантировать это время всеравно никто не сможет, т.к. какой-нить жесткий диск, запнется на своем блине и повесит всю систему на пару секунд.

Это сообщение отредактировал(а) korian - 3.4.2008, 17:35
PM   Вверх
MAKCim
Дата 3.4.2008, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(JackYF @  3.4.2008,  16:48 Найти цитируемый пост)
хорошо, верю, но на кой фиг тогда сделали nanosleep? более того, вызовы sleep и msleep, кажется, просто вызывают nanosleep, не так ли?

Цитата

nanosleep()  delays the execution of the program for at least the time specified in *req

т. е как видишь, семантика не нарушается

почему сделали?
вполне возможно с расчетом на будущее
может когда-нибудь это станет возможным на обычных (не специализированных) десктопных процессорах
кроме того, юниксы (а nanosleep() специфицирована в POSIX.1-2001) бегают много где (и встаиваемые системы, и RT-системы, ...)
возможно в одном из этих мест nanosleep() отрабатывает свое название  smile

Добавлено через 10 минут и 53 секунды
Цитата(Benassi @  3.4.2008,  16:55 Найти цитируемый пост)
Хотелось бы рассчитать функцию wait(microseconds), которая зависела бы от процессора, используя RDTSC или QueryPerformance, минимальный простой (не Sleep а while();) у меня должен быть 4 микросекунды.

с асинхронными событиями даже RDTSC не справится
другое дело, замаскировать все, что можно замаскировать
но из 3-го кольца без специального API это не сделать
кроме того, чтобы RDTSC использовать, нужно точно знать частоту инкрементации счетчика TSC
и чтобы эта частота не менялась динамически



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 3.4.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(korian @  3.4.2008,  17:16 Найти цитируемый пост)
т.к. какой-нить жесткий диск, запнется на своем блине и повесит всю систему на пару секунд.

не повесит  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
korian
Дата 3.4.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Цитата(MAKCim @  3.4.2008,  16:54 Найти цитируемый пост)
не повесит  

это почему? поидее смотря на чем запнется...
PM   Вверх
MAKCim
Дата 3.4.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(korian @  3.4.2008,  18:48 Найти цитируемый пост)
это почему? поидее смотря на чем запнется... 

так это проблема контроллера диска
если запнется - возвратит ошибку
"запинание" не влияет на процессор 




--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
korian
Дата 3.4.2008, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Цитата(MAKCim @  3.4.2008,  18:01 Найти цитируемый пост)
"запинание" не влияет на процессор 

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

Это сообщение отредактировал(а) korian - 3.4.2008, 19:35
PM   Вверх
MAKCim
Дата 3.4.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(korian @  3.4.2008,  19:32 Найти цитируемый пост)
если они работают с диском, а они все работают с диском

отнюдь
Цитата(korian @  3.4.2008,  19:32 Найти цитируемый пост)
также как существует вариант, когда написанный таймер будет отсчитывать ровно 1 мкс

таймер то отсчитает без проблем, но когда мы получим уведомление об этом, общее количество микросекунд будет далеко не 1
Цитата(korian @  3.4.2008,  19:32 Найти цитируемый пост)
когда в системе всего один поток и нет переключений на обработку прерываний, этого добиться можно

учитываешь обработчик самого прерывания по таймеру?
Цитата(korian @  3.4.2008,  19:32 Найти цитируемый пост)
если уж на то пошло, пусть диск работает через PIO, тогда будет влиять и на процессор.

если произошла ошибка, не важно DMA используется, или PIO

Добавлено через 4 минуты и 47 секунд
Цитата(korian @  3.4.2008,  19:32 Найти цитируемый пост)
на процессор - нет, а на процессы - влияет

если текущий процесс не выполняет операции I/O, а он не выполняет, т. к
Цитата(korian @  3.4.2008,  17:16 Найти цитируемый пост)
и while(); от WaitableTimer сильно отличаться не будет, даже если вы найдете вариант посчитать количество итераций для while.

по определению, операции I/O реализуются через read()/write()

то на этот процесс диск не влияет
переключение контекста да, диск - нет



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
korian
Дата 3.4.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Цитата(MAKCim @  3.4.2008,  18:56 Найти цитируемый пост)
таймер то отсчитает без проблем, но когда мы получим уведомление об этом, общее количество микросекунд будет далеко не 1

Цитата(MAKCim @  3.4.2008,  18:56 Найти цитируемый пост)
учитываешь обработчик самого прерывания по таймеру?

Цитата(korian @  3.4.2008,  18:32 Найти цитируемый пост)
когда в системе всего один поток и нет переключений на обработку прерываний

на сколько я знаю, на x86, все прерывания можно отключить, включая таймер (может ошибаюсь...)
если делать таймер через for(int i = 0; i < n; ++i) ; то управление вернет сразу после того как пройдет 1 мкс.

и вообще не вижу смысла в споре... или вы считаете, что не может быть варианта, когда зависание диска приведет к зависанию всей системы?

PM   Вверх
JackYF
Дата 3.4.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(korian @  3.4.2008,  19:39 Найти цитируемый пост)
или вы считаете, что не может быть варианта, когда зависание диска приведет к зависанию всей системы?

Товарищ, извини, но я железно знаю пример, когда жёсткие диски отвалились (хардварно), а система (GNU/Linux) продолжала работать, и, более того, обрабатывать сетевые запросы. Так что мимо.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
korian
Дата 3.4.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Цитата(JackYF @  3.4.2008,  20:17 Найти цитируемый пост)
Товарищ, извини, но я железно знаю пример, когда жёсткие диски отвалились (хардварно), а система (GNU/Linux) продолжала работать, и, более того, обрабатывать сетевые запросы. Так что мимо. 

это тут не причем. перечитайте вопрос.
я не говорил, что при любом зависании диска вся система полностью зависает.

Это сообщение отредактировал(а) korian - 3.4.2008, 21:34
PM   Вверх
MAKCim
Дата 3.4.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



korian

JackYF правильно пример привел
он показывает, что правильно спроектированная система не завалится при неполадке с блочным устройством
остальные в виду их дефектности не рассматриваем


Это сообщение отредактировал(а) MAKCim - 3.4.2008, 22:08


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
korian
Дата 3.4.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



опять же, вопрос о том, что система должна завалиться не рассматривался, она должна запаузиться на некоторое время.
PM   Вверх
mr.DUDA
Дата 4.4.2008, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Тема-дубликат, закрываю.




--------------------
user posted image
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Закрытая темаСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1599 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.