The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Использование пересекающихся таймеров в программе. (timeout connect time java)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: timeout, connect, time, java,  (найти похожие документы)
Date: Fri, 11 Oct 2002 22:17:30 +0600 From: Ramazan Ja-Far <ramazanjf@svitonline.com> Newsgroups: ftn.ru.unix.prog Subject: Использование пересекающихся таймеров в программе. AP>Я имел ввиду вот что. Скажем, пишу я два куска кода. В одном таймер AP>используется, чтобы организовать timeout на connect, а в другом на AP>целую последовательность операций (ну, например, на вытаскивание файла AP>по FTP). По отдельности оба куска работают замечательно. Hо если я AP>захочу скрестить их вместе (например, использовать "умный" connect AP>из первого куска кода в качестве connect'а для FTP-библиотеки), то AP>они немедленно подерутся за таймер. Эта проблема решается написанием умного таймера. К примеру, таймер имеет список отрезков времени и соответствующих дескрипторов файлов, через которые он будет сигналить. Плюс мутекс, контролирующий доступ к списку и 1 dedicated waiting thread. Допустим, есть два потока (threads). 1-й просит таймер просигналить через 20000 миллисекунд. 2-й - через 100. В список складываем два задания - ждать 100 мсек и сигналить 2-му потоку, а потом ждать 19900мсек и сигналить 1-му в указанный дескриптор. Dedicated thread или ничего не делает, или ждёт с таймаутом (таймаут берётся из первого задания в списке) на каком-нибудь объекте. Этот объект сигналят потоки, когда нужно изменять задание в начале списка или отменять задания. Проснувшись, dedicated timer thread захочет узнать, сколько он спал, если конечно его разбудили, а не закончился таймаут, - и скорректировать время для следующих заданий. В списке можно держать время в виде delta от предыдущего задания, или абсолютные значения - на вкус реализатора (implementor). В общем, я подобное писал на Java. Там можно ждать на чём угодно - java.lang.Object.wait(long msec), java.lang.Object.notify(), java.lang.Object.notifyAll() :-) Думаю, аборигенам RU.UNIX.PROG не составит труда воплотить идею... P.S. all abovementioned should be considered as general idea, having been implemented by author in Java, but never in C/POSIX.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:



АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Подробнее о проведении акции вы можете прочитать на странице сайта.


  Закладки на сайте
  Проследить за страницей
Created 1996-2012 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList