On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 887
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.09.08 16:05. Заголовок: [translate] BackGround


Кто то может перевести help к этим функциям на русский ?
HB_BackGroundActive() Queries and/or changes the activity of a single background task.
HB_BackGroundAdd() Adds a new background task.
HB_BackGroundDel() Removes a background task from the internal task list.
HB_BackGroundReset() Resets the internal counter of background tasks.
HB_BackGroundRun() Enforces execution of one or all background tasks.
HB_BackGroundTime() Queries or changes the wait interval in milliseconds after which the task is executed.
HB_IdleAdd() Adds a background task for being executed during idle states.
HB_IdleDel() Removes a task from the list of idle tasks.
HB_IdleReset() Resets the internal counter of idle tasks.
HB_IdleSleep() Halts idle task processing for a number of seconds.
HB_IdleSleepMSec() Queries or changes the default time interval for idle task processing.
HB_IdleState() Signals an idle state.
HB_IdleWaitNoCPU() Toggles the mode for CPU usage in Idle wait states.
SET BACKGROUND TASKS Enables or disables the activity of background tasks.
SET BACKGROUNDTICK Defines the processing interval for background tasks.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 96 , стр: 1 2 3 4 5 All [только новые]


администратор




Пост N: 1043
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.10.08 06:21. Заголовок: Петр пишет: Спрятат..


Петр пишет:

 цитата:
Спрятать курсор? IMHO только WAPI ShowCursor()


Спасибо , но не сработало.

Петр пишет:

 цитата:
Dima пишет:

цитата:
IsValidThread реализован в Harbour

Нет, а зачем она тебе?



Просто хотел подстраховаться от возможного вылета в hb_threadJoin(),
так как задача будет работать 24 часа в сутки.



И еще вопрос.
 
for i=1 to 20
hb_threadStart(@Test(),i)
next


Каждый поток обрабатывается в своей области памяти ?
Не будет конфликта локальных и привате переменных объявленных в функции Test() ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 568
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.10.08 07:44. Заголовок: ShowCursor( .F. ) ка..


ShowCursor( .F. ) катит? Странно..

Проверяй thread на hb_isPointer(thread) != .F.

Dima пишет:

 цитата:
Каждый поток обрабатывается в своей области памяти ?


Смотри tests\mt\mttest08.prg
Локальных не будет, а там как напишешь , т.е. с какими параметрами вызовешь hb_threadStart.
Статические переменные обьявляй как thread static (если нужно)


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1049
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.10.08 12:26. Заголовок: Петр Подскажи дружи..


Петр
Подскажи дружище что тут можно сделать !
 
for nind=1 to 50
hb_threadStart(@Test(),nind)
next

Func Test(nid)
USE test SHARED Alias &( "Test"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test1"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test2"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test3"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test4"+ Alltrim( Str(nId)) ) NEW

* тут что то делаем
* и в какой то момент можем получить такой то Alias не существует
* при обращении к какой то базе.
* Почему ?
* Куда и какой костыль вставить ? :)

close ("Test"+ Alltrim( Str(nId)))
close ("Test1"+ Alltrim( Str(nId)))
close ("Test2"+ Alltrim( Str(nId)))
close ("Test3"+ Alltrim( Str(nId)))
close ("Test4"+ Alltrim( Str(nId)))

return nil


PS
ADS.
Что интерестно , то работает то нет..........

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1051
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.10.08 14:06. Заголовок: Если вставить костыл..


Если вставить костыль , то работает , но это наверное не выход
 
for nind=1 to 50
hb_threadStart(@Test(),nind)
hb_idleSleep(5)
next


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 571
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 25.10.08 18:13. Заголовок: Dima пишет: for ni..


Dima пишет:

 цитата:
for nind=1 to 50
hb_threadStart(@Test(),nind)
next



Это реальная ситуация? Тебе действительно нужно вызывать 50 потоков?
И зачем одну базу открывать столько раз. По коду я вижу, что ты даже не проверяешь, успешно ли открыта база.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1052
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.10.08 18:29. Заголовок: Петр пишет: Это реа..


Петр пишет:

 цитата:
Это реальная ситуация? Тебе действительно нужно вызывать 50 потоков?


Ситуация почти реальна. Сколько зайдет запросов столько будет и потоков.
Запросов может быть от 1 до 50
Открытие базы я конечно же проверяю , дал пример что бы ясно было чего делаю.
Если хоть одна база не открыта я выхожу из функции Test.
Возможно дело в кол-ве одновременно открываемых файлов ? Тогда что нужно исправить ?
Реально в одном потоке я открываю 20 баз и 15 индексных файлов.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 572
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 25.10.08 18:56. Заголовок: А упростить себе жиз..


А упростить себе жизнь и держать таблицы открытыми?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1053
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.10.08 18:59. Заголовок: Петр пишет: А упрос..


Петр пишет:

 цитата:
А упростить себе жизнь и держать таблицы открытыми?


Не думал про это , теперь подумаю !
И все же почему падает пример ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 573
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 25.10.08 19:28. Заголовок: Хороший вопрос, но у..


Хороший вопрос, но у меня сейчас нет на него ответа.
Надо тестировать. Хотя бы найти, чей это косяк ADS или Harbour.
Посмотрю на досуге.

Но ясно одно, такие программы должны быть тщательно спроектированы и реализованы.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1054
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.08 10:32. Заголовок: В реальном примере п..


В реальном примере падает даже на 3 потоках (не всегда) с той же ошибкой "Alias не существует"
При чем падает в разных местах и закономерности не обнаружил.
Базы все открыты 100 % (по той схеме о которой писал выше)
Есть причины не держать базы все время открытыми.
Где то читал на форуме http://www.fivetechsoft.com/forums что ADS не работает в MT режиме или
работает не корректно.....но пока не вижу ссылки на тему.

PS
В отличие от Xharbour , Ads спецом для MT режима я не пересобирал , все собралось и так.
Возможно в этом причина ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1055
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.08 13:16. Заголовок: Dima пишет: Func ..


Dima пишет:

 цитата:

 
Func Test(nid)
USE test SHARED Alias &( "Test"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test1"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test2"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test3"+ Alltrim( Str(nId)) ) NEW
USE test SHARED Alias &( "Test4"+ Alltrim( Str(nId)) ) NEW

* тут что то делаем
* и в какой то момент можем получить такой то Alias не существует
* при обращении к какой то базе.
* Почему ?
* Куда и какой костыль вставить ? :)

close ("Test"+ Alltrim( Str(nId)))
close ("Test1"+ Alltrim( Str(nId)))
close ("Test2"+ Alltrim( Str(nId)))
close ("Test3"+ Alltrim( Str(nId)))
close ("Test4"+ Alltrim( Str(nId)))

return nil



Опытным путем установил , что если nid локальная переменная то прога может падать. Если Private
то не падает.
Если так может упасть
Func Test(nid)
Так пока не упала ни разу ;)
Func Test()
param nid

PS
Рано радовался...............меньше стало падать но все равно падает


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 574
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.10.08 14:18. Заголовок: Dima пишет: В отлич..


Dima пишет:

 цитата:
В отличие от Xharbour , Ads спецом для MT режима я не пересобирал , все собралось и так.
Возможно в этом причина ?



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

for nind=1 to 50
hb_threadStart(@Test(),nind)
next
с RDDCDX отрабатывает без проблем

Меняй схему работы - запросы ставь в очередь и обрабатывай последовательно.
И hb_idleSleep() - это не костыль.

А вообще задача у тебя на каком процессоре крутится - есть реальная многопроцессорность (ядерность) или все средствами OS разруливается?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1056
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.08 14:53. Заголовок: Петр пишет: Меняй с..


Петр пишет:

 цитата:
Меняй схему работы - запросы ставь в очередь и обрабатывай последовательно


Видимо так и придется делать , хотя задачу ставили что бы все крутилось одновременно.
Есть около 50 коммерческих агентов которые ездят с ноутбуками и собирают заявки от своих
клиентов. По мере необходимости каждый из агентов сбрасывает на ftp свои заявки + могут
делать запросы на получение прайс листов , остатков , актуального справочника своих клиентов
и тд и тп. Именно эти запросы и хотелось пустить в потоки..........но , похоже не выйдет
так как ADS выбрыкивается.
Жаль.

Задача крутится на самом обычном процессоре под XP


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 575
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.10.08 15:53. Заголовок: Dima пишет: Задача ..


Dima пишет:

 цитата:
Задача крутится на самом обычном процессоре под XP



Почитай в справке ADS - Number of Worker Threads.
Для 50 рабочих потоков нужно, как минимум 4 CPU (физических или логических).


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1057
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.08 16:16. Заголовок: Петр Понял. Спасибо..


Петр
Понял. Спасибо !

Буду обрабатывать запросы последовательно.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1058
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.10.08 10:06. Заголовок: Глянул Ads_err.dbf ,..


Глянул Ads_err.dbf , когда прога падала лезут одни и те же ошибки
 
THREAD_NUM ERR_CLASS ERR_CODE ADS_SOURCE SRC_LINE
111295936 0 16 dbf.c 269
111295936 0 128 dbf.c 270
111295936 7000 7040 dbf.c 280
111879232 0 16 dbf.c 269
111879232 0 128 dbf.c 270
111879232 7000 7040 dbf.c 280


Так и не понял что за ERR_CODE 128 , в доке не нашел.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 96 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет