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




Пост 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: 1023
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.10.08 16:00. Заголовок: Петр пишет: вызов T..


Петр пишет:

 цитата:
вызов ThreadSleep(nTimeOut) с nTimeOut < 20 не желателен, хотя и возможен.


Не знал , учту. Спасибо !!!

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




Пост N: 1024
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.10.08 16:48. Заголовок: Dima пишет: for nin..


Dima пишет:

 цитата:

 
for nind=1 to len(anind)
if IsValidThread(anind[nind])
JoinThread(anind[nind])
endif
next



Подумалось тут. О чем говорит факт что IsValidThread вернет .F. , о том что данный поток закончен
и нет смысла делать для него JoinThread ?
Скажем есть 10 потоков , в 3-х из них IsValidThread вернул .F. и JoinThread не был выполнен
, к каким последствиям это может привести ?

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


Пост N: 551
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.10.08 18:01. Заголовок: Dima пишет: О чем г..


Dima пишет:

 цитата:
О чем говорит факт что IsValidThread вернет .F. , о том что данный поток закончен
и нет смысла делать для него JoinThread ?


Нет, IsValidThread вернет .F. также в том случае по какой-то причине поток не инициализировался.

Dima пишет:

 цитата:
к каким последствиям это может привести


Все зависит от задачи, порой к плачевным
Выполнять JoinThread не обязательно, но ты, наверное, хотел бы контролировать поведение своей программы.

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




Пост N: 1025
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.10.08 18:09. Заголовок: Петр пишет: Выполня..


Петр пишет:

 цитата:
Выполнять JoinThread не обязательно, но ты, наверное, хотел бы контролировать поведение своей программы.


Конечно хочу !
Как это правильно сделать на Xharbour применительно к этому примеру ?

 
STATIC lExit

PROCEDURE main
local threadA, threadB
cls
lExit := .F.
threadB := StartThread( @MyFuncB())
threadA := StartThread( @MyFuncA())

JoinThread( threadA )
JoinThread( threadB )
RETURN
*************************
func MyFuncB()
local nind
local tst:=20
local anind:=array(tst)
DO WHILE !lExit

for nind=1 to tst
anind[nind]:=StartThread(@Test(),nind)
next

for nind=1 to len(anind)
if IsValidThread(anind[nind])
JoinThread(anind[nind])
endif
next

enddo
ThreadSleep(20)
RETURN nil
**************
Func Test(nrow)
local i
for i=1 to 1000
DispOutAt(nRow,10,str(i,5))
next
return nil
******************
Func MyFuncA( )
DO WHILE inkey( 0.1 ) != 27
ENDDO
lExit := .T.
RETURN nil


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


Пост N: 552
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.10.08 19:36. Заголовок: Я уже писал - этот п..


Я уже писал - этот пример достаточно корректный.
Единственное, я, наверное, делал бы проверку IsValidThread не перед JoinThread, а после StartThread.

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




Пост N: 1026
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.10.08 08:15. Заголовок: Петр пишет: Единств..


Петр пишет:

 цитата:
Единственное, я, наверное, делал бы проверку IsValidThread не перед JoinThread, а после StartThread


Сделать , сделал только это мало что дало.........
 
func MyFuncB()
local nind
local tst
local anind

DO WHILE !lExit
tst:=20
anind:={}
for nind=1 to tst
eval({|x| x:=StartThread(@Test(),nind),aadd(anind,{x,IsValidThread(x)}) })
DispOutAt(nind,45,anind[len(anind)][2],"rb+/n") // видно что все потоки валидны
next

for nind=1 to len(anind)
if anind[nind][2] .and. IsValidThread(anind[nind][1]) // если не делать IsValidThread , упадет прога...error.log ниже
JoinThread(anind[nind][1])
DispOutAt(nind,20,anind[nind][1])
DispOutAt(nind,30,nind)
else
DispOutAt(nind,20,anind[nind][1],"r/n") // оказывается не все валидны , почему ?
DispOutAt(nind,30,nind,"r/n")
endif
next
enddo
ThreadSleep(20)
RETURN nil




Subsystem Call ....: BASE
System Code .......: 3012
Default Status ....: .F.
Description .......: Given thread is not valid
Operation .........: JOINTHREAD
Arguments .........: [ 1] = Type: P Val: 9D25A4
Involved File .....:
Dos Error Code ....: 0
Running threads ...: 3
VM thread ID ......: 3
OS thread ID ......: 2096


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


Пост N: 554
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 22.10.08 09:58. Заголовок: Если внимательно чит..


Если внимательно читать описание JoinThread
If the thread <pThreadHandle> is already terminated, the function returns immediately and does not wait.
ничего подобного не должно случаться, но в xHarbour многопоточность реализована достаточно неполно, как следствие, наверное, никем не используется и следовательно ошибки не исправляются.

Так, что ипользуя IsValidThread с JoinThread ты просто отсеиваешь глюки xHarbour.

Некоторое время назад на форуме comp.lang.xharbour была заочная дисскусия между Пржемеком и автором реализации многопоточности xHarbour (забыл как его зовут, итальянец), кстати теперь я что-то не могу ее найти, или удалили или просто не внимателен.
Найди и почитай, очень познавательно для пользователей xHarbour.
Так вот, по словам Пржемека многопоточность xHarbour можна считать декларативной и он не рекомендовал бы ее использовать в реальных бизнес проектах. Один пример, в отдельных случаях из за способа обращения к таблице динамических символов прога на xHarbour использующая МТ, может сама по себе валиться после нескольких часов работы, так, что написать прогу 24х7 не удастся.

P.S. Я тебя когда спрашивал, не мешают ли тебе какие-то причины (религиозные, например) использовать Harbour?


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




Пост N: 1027
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.10.08 12:31. Заголовок: Петр пишет: Так, чт..


Петр пишет:

 цитата:
Так, что ипользуя IsValidThread с JoinThread ты просто отсеиваешь глюки xHarbour


Хочешь сказать что тот же код без проверок (IsValidThread) будет работать в Harbour без падений ?


ЗЫ
rddads в Harbour адаптирован под старые версии ADS , типа 5-ой ?

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




Пост N: 1011
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 22.10.08 13:00. Заголовок: Dima пишет: rddads ..


Dima пишет:

 цитата:
rddads в Harbour адаптирован под старые версии ADS , типа 5-ой ?



Во всяком случае последнее изменение:
+ Added support for ADS_USE_OEM_TRANSLATION for old ads versions.
в Harbour оперативно портировали

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


Пост N: 557
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 22.10.08 13:05. Заголовок: Dima пишет: Хочешь..


Dima пишет:

 цитата:

Хочешь сказать что тот же код без проверок (IsValidThread) будет работать в Harbour без падений ?


Я уже писал, что портирование даного примера из xHarbour в Harbour - далось мне с трудом, непонятные глюки на ровном месте.

2008-10-07 09:33 UTC+0200 Viktor Szakats (harbour.01 syenar hu) 
* include/hbextern.ch
* source/rtl/inkey.c
+ Added HB_KEYCLEAR() a documented function equivalent
to "CLEAR TYPEAHEAD" command, or undocumented __KEYBOARD() function.

* contrib/rddads/rddads.h
* contrib/rddads/ads1.c
+ Added support for ADS_USE_OEM_TRANSLATION for old ads versions.
Borrowed from xhb/Pavel Tsarenko.



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




Пост N: 1028
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.10.08 16:09. Заголовок: Петр пишет: Harbour..


Петр пишет:

 цитата:
Harbour + MT: пример
 

#include "hbthread.ch"

MEMVAR lExit
//
PROCEDURE main
LOCAL threadA, threadB, xResult := NIL
PUBLIC lExit := .F.

threadB := hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @MyFuncB() )
threadA := hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @MyFuncA() )

*** __keyboard(chr(27)) // можно закомментировать

hb_threadJoin( threadA, @xResult )
? xResult

hb_threadJoin( threadB, @xResult )
? xResult
//
RETURN

/*
*/
STATIC FUNCTION MyFuncA( )

DO WHILE inkey( 0.1 ) != 27
ENDDO
lExit := .T.
//
RETURN LastKey()

/*
*/
STATIC FUNCTION MyFuncB( )
LOCAL nCounter, nI

DO WHILE !lExit
nCounter := 0

FOR nI := 1 TO 10000
nCounter ++
NEXT nI
END
//
RETURN nCounter




Скачал и собрал Harbour. А вот данный пример собрать не могу. В Xharbour как то попроще это ;)
Кинул пример в папку Tests , запускаем bld_b32.bat m1 /MT и получаем ошибку в 13 строке , аргумент error
hb_threadJoin , хотя синтаксис верен.
Пробнул собрать с помощью hbmake
Результат
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
obj\m1.c:
Error E2451 obj\m1.c 25: Undefined symbol 'HB_FS_MEMVAR'
Error E2141 obj\m1.c 25: Declaration syntax error
Error E2190 obj\m1.c 25: Unexpected }
Error E2190 obj\m1.c 25: Unexpected }
Error E2040 obj\m1.c 25: Declaration terminated incorrectly
Error E2190 obj\m1.c 25: Unexpected }
Error E2190 obj\m1.c 25: Unexpected }
Error E2040 obj\m1.c 25: Declaration terminated incorrectly
Error E2451 obj\m1.c 38: Undefined symbol 'hb_vm_SymbolInit_M1'
*** 9 errors in Compile ***




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


Пост N: 561
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 22.10.08 17:01. Заголовок: Dima пишет: Скачал ..


Dima пишет:

 цитата:
Скачал и собрал Harbour


make_b32.bat
make_b32.bat install

bld_b32.bat m1 /MT - неправильно

нужно в bld_b32.bat
добавить
set HB_MT=MT
можно также
set C_USR=
set PRG_USR=
set HB_USER_LIBS=rddads hbcurl


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




Пост N: 1035
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.10.08 08:50. Заголовок: Петр пишет: нужно в..


Петр пишет:

 цитата:
нужно в bld_b32.bat
добавить
set HB_MT=MT


получил тот же результат
Dima пишет:

 цитата:
аргумент error
hb_threadJoin



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


Пост N: 563
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.10.08 12:35. Заголовок: Дима Ты слинковал п..


Дима

Ты слинковал программу в ST режиме, отсюда и падения

добавь таки set HB_MT=MT


P.S. Для проверки в каком режиме работает HVM ST или MT используй hb_mtvm()

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




Пост N: 1037
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.10.08 13:13. Заголовок: Петр пишет: добавь ..


Петр пишет:

 цитата:
добавь таки set HB_MT=MT


Грю же что добавил ;)
Странно но в батнике bld.bat эти строки не срабатывают похоже , временно сделал так
rem if "%HB_MT%" == "MT" set _HBVM_LIB=hbvmmt
rem if not "%HB_MT%" == "MT" set _HBVM_LIB=hbvm
set _HBVM_LIB=hbvmmt

Все собралось и работает отлично в отличие от Xharbour !!!


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




Пост N: 1038
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.10.08 13:27. Заголовок: Петр Однако при 20 ..


Петр
Однако при 20 запущенных потоках проц грузится очень конкретно.
Пришлось в цикл воткнуть hb_idleSleep(0.001).
Может есть какой то другой способ разгрузки процессора ?

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


Пост N: 564
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.10.08 13:42. Заголовок: О процессоре - охотн..


О процессоре - охотно верю.
В реальной жизни, не в примере нужно вызывать hb_releaseCPU()


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




Пост N: 1039
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.10.08 13:52. Заголовок: Петр Понял , спасиб..


Петр
Понял , спасибо.
Пересобрал и оставил крутится пару часов. Надеюсь не свалится :)

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




Пост N: 1042
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.10.08 17:51. Заголовок: Петр пишет: Так, чт..


Петр пишет:

 цитата:
Так, что ипользуя IsValidThread с JoinThread


IsValidThread реализован в Harbour ?

PS
Как крыску отключить в Harbour ?
Так не катит request HB_NOMOUSE

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


Пост N: 567
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.10.08 21:06. Заголовок: Dima пишет: IsValid..


Dima пишет:

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



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

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

#pragma BEGINDUMP
#include <windows.h>
HB_FUNC( SHOWMOUSECURSOR )
{
ShowCursor( hb_parl(1) );
}
#pragma ENDDUMP


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

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