Re: [ROOT] how to protect TApplication with mutexes

From: Victor Perevoztchikov (perev@bnl.gov)
Date: Fri Feb 18 2000 - 02:53:47 MET


Hi Matevz,

> place to lock/unlock mutex that would prevent my threads from changing
> global variables (like gDirectory when adding new histograms).

the problem is not so simple. The numerous globals in ROOT are very hard for
threads, even if all of them are mutex-ed

Example:

Thread 1 open TFile1; 
Thread 2 open TFile2;
Thread 1 create histogram. 

Thread 1 thinks that its histogram in TFile1, but it is in TFile2, because
global gFile was unpredictably changed.
Mutex can not help here.

But in the next run it could be in TFile 1 or even in TFile 9.

So, for normal user TThread is very dangerous. It was intended to use only
for online, where users much more familiar with such problems.

One global, gPad is defenced against it, each thread has own gPad, 
theoretically it is possible to do with others, but ...

Victor


Matevz Tadel wrote:
> 
> Hi,
> I'm running MyRint : public TRint within a thread. Where is the proper
> place to lock/unlock mutex that would prevent my threads from changing
> global variables (like gDirectory when adding new histograms).
> I tried by redefining TApplication::Start/StopIdleing(), but i'm not
> completely sure this is sufficient ... Could someone please elaborate on
> the problem ...
> 
> Thank you,
> matevz
> 
> ---------------------------------------------------
>  Matevz Tadel,         E-mail: Matevz.Tadel@ijs.si
>  Department of Experimental High Energy Physics F9
>  Jozef Stefan Institute,  Jamova 39,  P.o.Box 3000
>  SI-1001 Ljubljana, Slovenia
>  Tel.: +386-61-177-3674      Fax: +386-61-125-7074
> ---------------------------------------------------

-- 
Victor M. Perevoztchikov   perev@bnl.gov  perev@vxcern.cern.ch       
Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY 11973-5000
tel office : 631-344-7894; fax 631-344-4206; home 631-345-2690



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:19 MET