FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Multithread
Posts: 145
Joined: Wed Nov 03, 2010 09:16 AM
Multithread
Posted: Tue Aug 25, 2015 11:47 AM

Hola

Estoy intentando hacer un programa multihilo y seg煤n tengo entendido tengo que enlazar la librer铆a hbvmmt.lib en lugar de hbvm.lib
El programa est谩 en Visual C.
Tambi茅n he visto que hab铆a que poner un define al compilar: /dHB_MT_VM
Recompilando el proyecto, la funci贸n hb_mtvm() me sigue devolviendo .F.

驴Alguien sabe que me falta?

Un saludo

Paco Garc铆a
Posts: 145
Joined: Wed Nov 03, 2010 09:16 AM
Re: Multithread
Posted: Tue Aug 25, 2015 12:24 PM

Me respondo

Aunque la funci贸n da .f., el programa funciona con funciones de threads.

Supongo que ser谩 normal. Si alguien sabe algo, se agradecer铆a.

Un saludo

Paco Garc铆a
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Multithread
Posted: Tue Aug 25, 2015 12:54 PM
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 145
Joined: Wed Nov 03, 2010 09:16 AM
Re: Multithread
Posted: Tue Aug 25, 2015 04:45 PM

Ya me funcion贸 sin hacer nada. Como dicen los usuarios: Yo no he tocado nada. jejeje

Muchas gracias

Paco Garc铆a
Posts: 24
Joined: Fri Dec 05, 2008 11:20 PM
Re: Multithread
Posted: Thu Jan 28, 2016 12:29 PM
Hola a todos,

Trabajo con estas versiones:

FWH 64 13.05 (MSVC++)
Harbour 3.2.0dev (r1306211258)

No consigo hacer que me funcione este c贸digo de multihilos. No hace nada cuando se ejecuta hb_threadStart, devuelve nil.

驴Podr铆ais echarme una mano por favor?

Code (fw): Select all Collapse
#include "fivewin.ch"

PROCEDURE main() 
聽 聽 LOCAL aObj 聽:= Array(1000000)
聽 聽 LOCAL oDlg, oButton 聽 聽
聽 聽 PUBLIC nDestroyed := 0 聽 
聽 聽 
聽 聽 DEFINE DIALOG oDlg SIZE 400, 500
聽 聽 聽 聽 
聽 聽 @ 11, 聽0 BUTTON oButton PROMPT "Start" SIZE 80, 聽8 ACTION Button1_Click(oDlg)
聽 聽 
聽 聽 ACTIVATE DIALOG oDlg CENTER
RETURN

PROCEDURE Button1_Click(oDlg)
聽 聽 LOCAL n 聽 聽 聽 聽:= 0
聽 聽 LOCAL pMutex 聽 := HB_MutexCreate()
聽 聽 LOCAL oThread
聽 聽 LOCAL nVal 聽 聽
聽 聽 
聽 聽 FOR n :=1 to 10 聽 聽 聽 
聽 聽 聽 聽
聽 聽 聽 聽hb_threadStart( @MyFuncForThreads(), pMutex, oDlg, n)
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
聽 聽 NEXT n
聽 聽 
聽 聽 WaitForThreads()
聽 聽 
RETURN

PROCEDURE MyFuncForThreads(pMutex, oDlg ,n) 聽 聽 
聽 聽 
聽 聽 HB_MutexLock(pMutex) 聽 聽
聽 聽 oDlg:Say(n,0,"Thread ID" + lTrim(Str(GetThreadID())) + " system id: " + lTrim(Str(GetSystemThreadID()))) 聽 聽 聽 聽 聽 聽 聽 
聽 聽 HB_MutexUnlock(pMutex) 聽 聽 聽 聽
聽
RETURN


El c贸digo lo tom茅 de ejemplo en este post:
http://forums.fivetechsupport.com/viewtopic.php?f=3&t=27120&start=0#p150719

El build que he usado es el b谩sico de los samples. He probado a帽adiendo la %hdirl%\hbvmmt.lib seg煤n he le铆do en ese post, pero no he notado cambios.

Gracias de antemano! :-)

Roberto S谩nchez K.
Roberto S谩nchez k:
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Multithread
Posted: Thu Jan 28, 2016 02:44 PM
Son dos librerias a a帽adir/sustituir


echo %hdirl%\hbvmmt.lib + >> b32.bc

and

echo %bcdir%\lib\cw32mt.lib + >> b32.bc

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 24
Joined: Fri Dec 05, 2008 11:20 PM
Re: Multithread
Posted: Fri Jan 29, 2016 11:30 AM
Cristobal,
Muchas gracias por responder :-)

* La 1陋 lib hbvmmt la ten铆a ya puesta, pero no puedo quitar la de hbvm.lib del bat porque no compila. Incluyo entonces ambas y s铆 que compila ok

* La 2陋 no la tengo disponible porque estoy compilando a 64 y el "linkador" es el vc64, que no tiene la cw32mt.lib

He supuesto que el sufijo "mt" de las lib tiene que ver con los multithread, con lo que he estado a帽adiendo las librer铆as de vc 64 que conten铆an "MT" en plan dando palos de ciego y agua de nuevo.

Os muestro mi bat con todas las librer铆as que incluyo.
Code (fw): Select all Collapse
CLS
ECHO 脷脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛驴
ECHO 鲁 FWH 64 for Harbour 13.05 (MSVC++) May.2013 聽 聽 聽 Harbour development power 鲁脺
ECHO 鲁 (c) FiveTech, 1993-2013 聽 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8 鲁脹
ECHO 脌脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脵脹
ECHO 每 脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽脽

if ATHREAD == A GOTO :SINTAX
if NOT EXIST THREAD.prg GOTO :NOEXIST

if "%FWDIR%" == "" set FWDIR=D:\FWH64
if "%HBDIR%" == "" set HBDIR=D:\harbour64

ECHO Compiling...

set hdir=%HBDIR%
set hdirl=%hdir%\lib
set vcdir=D:\vc64

set include=%vcdir%\include;%hdir%\include;%include%
set lib=%vcdir%\lib;%hdir%\lib;%lib%

%hdir%\bin\harbour THREAD /n 聽/i%fwdir%\include;%hdir%\include /w /p /d__64__ 聽
IF ERRORLEVEL 1 GOTO COMPILEERROR


@type comp.log
@type warnings.log

%vcdir%\bin\cl -TP -W3 -c THREAD.c


:ENDCOMPILE

IF EXIST THREAD.rc %vcdir%\bin\rc -r -I%hdir%\include;%vcdir%\include -D__64__ THREAD

echo THREAD.obj 聽 聽 聽 聽 聽> msvc.tmp


echo %fwdir%\lib\FiveH64.lib %fwdir%\lib\FiveHC64.lib 聽>> msvc.tmp

echo %hdirl%\hbrtl.lib 聽>> msvc.tmp

echo %hdirl%\hbvm.lib 聽>> msvc.tmp

echo %hdirl%\hbvmmt.lib 聽>> b32.bc

echo %hdirl%\gtgui.lib 聽>> msvc.tmp
echo %hdirl%\hblang.lib 聽>> msvc.tmp
echo %hdirl%\hbmacro.lib 聽>> msvc.tmp
echo %hdirl%\hbrdd.lib 聽>> msvc.tmp
echo %hdirl%\rddntx.lib 聽>> msvc.tmp
echo %hdirl%\rddcdx.lib 聽>> msvc.tmp
echo %hdirl%\rddfpt.lib 聽>> msvc.tmp
echo %hdirl%\hbsix.lib 聽>> msvc.tmp
echo %hdirl%\hbdebug.lib 聽>> msvc.tmp
echo %hdirl%\hbcommon.lib 聽>> msvc.tmp
echo %hdirl%\hbpp.lib 聽>> msvc.tmp
echo %hdirl%\hbcpage.lib 聽>> msvc.tmp
echo %hdirl%\hbwin.lib 聽>> msvc.tmp
echo %hdirl%\hbct.lib 聽>> msvc.tmp
echo %hdirl%\hbziparc.lib >> msvc.tmp
echo %hdirl%\hbmzip.lib >> msvc.tmp
echo %hdirl%\hbzlib.lib >> msvc.tmp
echo %hdirl%\hbpcre.lib >> msvc.tmp
echo %hdirl%\minizip.lib >> msvc.tmp
echo %hdirl%\xhb.lib >> msvc.tmp
echo %hdirl%\hbcplr.lib >> msvc.tmp
echo %hdirl%\png.lib >> msvc.tmp

rem Uncomment these two lines to use Advantage RDD
rem echo %hdirl%\rddads.lib >> msvc.tmp
rem echo %hdirl%\ace32.lib >> msvc.tmp

echo %vcdir%\lib\kernel32.lib 聽>> msvc.tmp
echo %vcdir%\lib\user32.lib 聽 聽>> msvc.tmp
echo %vcdir%\lib\gdi32.lib 聽 聽 >> msvc.tmp
echo %vcdir%\lib\winspool.lib 聽>> msvc.tmp
echo %vcdir%\lib\comctl32.lib 聽>> msvc.tmp
echo %vcdir%\lib\comdlg32.lib 聽>> msvc.tmp
echo %vcdir%\lib\advapi32.lib 聽>> msvc.tmp
echo %vcdir%\lib\shell32.lib 聽 >> msvc.tmp
echo %vcdir%\lib\ole32.lib 聽 聽 >> msvc.tmp
echo %vcdir%\lib\oleaut32.lib 聽>> msvc.tmp
echo %vcdir%\lib\uuid.lib 聽 聽 聽>> msvc.tmp
echo %vcdir%\lib\odbc32.lib 聽 聽>> msvc.tmp
echo %vcdir%\lib\odbccp32.lib 聽>> msvc.tmp
echo %vcdir%\lib\iphlpapi.lib 聽>> msvc.tmp
echo %vcdir%\lib\mpr.lib 聽 聽 聽 >> msvc.tmp
echo %vcdir%\lib\version.lib 聽 >> msvc.tmp
echo %vcdir%\lib\wsock32.lib 聽 >> msvc.tmp
echo %vcdir%\lib\msimg32.lib 聽 >> msvc.tmp
echo %vcdir%\lib\oledlg.lib 聽 聽>> msvc.tmp
echo %vcdir%\lib\psapi.lib 聽 聽 >> msvc.tmp
echo %vcdir%\lib\gdiplus.lib 聽 >> msvc.tmp
echo %vcdir%\lib\winmm.lib 聽 聽 >> msvc.tmp

echo %vcdir%\lib\clfsmgmt.lib 聽 聽>> msvc.tmp
echo %vcdir%\lib\libcmt.lib 聽 聽 聽>> msvc.tmp
echo %vcdir%\lib\libcmtd.lib 聽 聽 >> msvc.tmp
echo %vcdir%\lib\libcpmt.lib 聽 聽 >> msvc.tmp
echo %vcdir%\lib\libcpmt1.lib 聽 聽>> msvc.tmp
echo %vcdir%\lib\libcpmtd.lib 聽 聽>> msvc.tmp
echo %vcdir%\lib\libcpmtd0.lib 聽 >> msvc.tmp
echo %vcdir%\lib\libcpmtd1.lib 聽 >> msvc.tmp
echo %vcdir%\lib\mgmtapi.lib 聽 聽 >> msvc.tmp 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 
echo %vcdir%\lib\mtx.lib 聽 聽 聽 聽 >> msvc.tmp
echo %vcdir%\lib\mtxdm.lib 聽 聽 聽 >> msvc.tmp


IF EXIST THREAD.res echo THREAD.res >> msvc.tmp

%vcdir%\bin\link @msvc.tmp /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:libc

IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *

D:
LIMPIA.BAT
GOTO EXIT
ECHO

rem delete temporary files
@del *.c
@del msvc.tmp

:COMPILEERROR
@type comp.log
ECHO * Compiling errors *
GOTO EXIT

:LINKERROR
ECHO * Linking errors *
GOTO EXIT

:SINTAX
ECHO 聽 聽SYNTAX: Build [Program] 聽 聽 {-- No especifiques la extensi垄n PRG
ECHO 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{-- Don't specify .PRG extension
GOTO EXIT

:NOEXIST
ECHO The specified PRG THREAD does not exist

:EXIT
pause


Muchas gracias! :-)
Roberto S谩nchez k:
Posts: 880
Joined: Fri Jan 12, 2007 08:35 PM
Re: Multithread
Posted: Fri Jan 29, 2016 10:02 PM
pgfdz wrote:Ya me funcion贸 sin hacer nada. Como dicen los usuarios: Yo no he tocado nada. jejeje

Muchas gracias



son esos duendes :-)
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

s茅蕦菨晒 谉蓯 蓯蕠s菨 opun莎 菨蕠s菨

Continue the discussion