Newsgroup: it.comp.programmare.win32
Titolo: Multithread

Come posso fare un programma multithread in C++?
Dove posso trovare la documentazione ( libri e docs on-line)?
Uso CBuilder4 Standard, ma non disdegnerei di passare al VisualC
Grazie
Gerolamo

 wrote in message
news:8jda81$1eq$1...@lacerta.tiscalinet.it...

Se ti puo' interessare, io dovrei avere un po' di documentazione in
formato elettronico sul multithreading in MFC. Fammi sapere
--
Massimo Fauro

Uso CBuilder4 Standard, ma non disdegnerei di passare al VisualC
Utilizza la classe VCL TThread.
E' di una semplicita' paurosa.
Dall'help del C++ Builder 4 (ver. Enterprise), alla voce "TThread" :
TThread is an abstract class that enables creation of separate threads
of execution in an application.
Unit
classes
Description
Create a descendant of TThread to represent an execution thread in a
multi-threaded application.  Each new instance of a TThread descendant
is a new thread of execution. Multiple instances of a TThread derived
class make a C++Builder application multi-threaded. 
When an application is run, it is loaded into memory ready for
execution. At this point it becomes a process containing one or more
threads that contain the data, code and other system resources for the
program. A thread executes one part of an application and is allocated
CPU time by the operating system. All threads of a process share the
same address space and can access the process’s global variables.
Use threads to improve application performance by
Managing input from several communication devices.
Distinguishing among tasks of varying priority.  For example, a high
priority thread handles time critical tasks, and a low priority thread
performs other tasks.
Following are issues and recommendations to be aware of when using
threads:
Keeping track of too many threads consumes CPU time; the recommended
limit is 16 active threads per process on single processor systems.
When multiple threads update the same resources, they must be
synchronized to avoid conflicts.
Most methods that access a VCL object and update a form must only be
called from within the main VCL thread.
To create and use a new thread object:
Choose File | New | Thread Object to create a new unit that contains
an object derived from the TThread class.
Define the new thread object’s constructor.
Define the thread object’s Execute method by inserting the code that
should execute when the thread is executed.
Pass any calls that use a VCL component to the Synchronize method,
which causes the main VCL thread to execute the call, avoiding
multi-thread conflicts. 
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
--------------------------------------------------------------
"Partire e' un po' morire e morire e' partire un po' troppo !"
--------------------------------------------------------------

 --------------------------------------------------------------
Grazie, adesso lo provo.
Gerolamo

Io avrei una domanda correlata:
So che in C Standard è possibile creare Form Multithreded (se non sbaglio
l'unica limitazione è nel form principale). Basta impostare la procedura di
gestione dei messaggi come Thread e il gioco è fatto.
Qualcuno ha provato a fare la stessa cosa con il C++ Builder? O ha idea come
fare?
Grazie!
Martino.

 ha scritto nel messaggio
news:8jet5r$36b$1...@nslave2.tin.it...


gestione dei messaggi come Thread e il gioco è fatto.
Niente affatto.
Il C standard non conosce ne' i thread ne' i form, ne' qualsiasi altra
cosa che sia specifica di una implementazione particolare.


 cosa che sia specifica di una implementazione particolare.
Hai ragione. In effetti ho usato dei termini impropri. Per C standard volevo
intendere la programmazione sotto Windows senza framework C++ (MFC, OWL,
vxWindows, etc...). E comunque non era esatto quello indicato nel mio
messaggio. Mi ricordavo male e sono andato a controllare quello avevo
scritto.
Era una caratteristica della classe CWinThread che può essere usata per
creare 'User-Interface Thread'.
La mia domanda alla fine risultava essere: La classe TThread in BCB3 è
utilizzabile allo scopo?
Grazie per la puntualizzazione.
Martino.