Compliment Genius

Can i give you some little clarification regarding "multi windows interface for 
thread "
      TODO: CTWIN is not MT safe yet - it will be updated together
            with core GT when we add multi window interface for
            thread with own console window.
I admit that I have same project where "multi windows" will be very useful

How a clipper developer can help you?
Can I help you collecting post regarding MT  and sending you for using as basis 
for documentation?

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Przemyslaw 
Czerpak
Sent: Monday, September 22, 2008 2:46 AM
To: Harbour Project Main Developer List.
Subject: [Harbour] MT TOFIX / TODO

Hi all,

Here is a list of things which should be fixed or added
in Harbour MT mode. I plan to make most of them soon but
I think it's good to document them now to avoid possible
problems or confusions.
In few cases I do not know if I will want to resolve them
for MT mode, f.e. investing time in MT safe profiler code.
Maybe I'll simply always disable it in MT builds.

1. Tracelog is not MT safe
   BTW: By default HVM is compiled with optional .prg function call
        tracing. This feature can be controlled (enabled/disabled) by
        __TRACEPRGCALLS() function. If user does not want to use it
        then he can rebuild Harbour with HB_NO_TRACE.
        IMHO HB_NO_TRACE should be default for Harbour builds and user
        who need it should recompile Harbour with HB_PRG_TRACE.
        I plan to make it soon.
2. DEBUGGER is not MT safe. Now do not use debugger in code with
   more then one thread active or it will crash.
   Before we will touch this code please think how MT debugger should
   work.
3. PROFILLER is not MT safe. It's optional code disabled by default.
   Before we will touch it please think how it should work for MT
   programs.
4. There is possible race condition in hb_threadWaitForAll() and
   hb_threadTerminateAll() - it's possible that they will finish
   and new HVM thread will be created in a while. It may happen
   when one of child thread begin to starts new thread and then is
   terminated. Both functions can finished waiting for loop for
   existing threads before the new one will be registered. It
   has to be fixed and I'll make it ASAP
5. hb_threadQuitRequest() can be ignored by thread in some cases
   due to race condition. It may happen if thread will overwrite
   request send by caller simultaneously, f.e. by BREAK.
6. There is possible race condition when class function is
   called 1-st time to create new object. It's possible that
   two threads will try to register the same class. It has to
   be fixed.
7, HB_LIBLOAD()/__HRBLOAD() may not be MT safe in some cases.
   Before they will not be resolved please try to not use this
   functions when other threads are executed.
8. It will be good to add user functions to resize class and RDD
   node arrays for situation when user will want to use more classes
   or RDDs registered at runtime by threads then set by default.
9. We should use hb_vmUnlock()/hb_vmLock() with hb_vmRequestQuerry()
   checking inside hbinet.c
10. Add protection for single GT access from different threads.
11. We need our own file lock server for aliased and MT workareas
    synchronization in POSIX systems 
12. We should check contrib code and eliminate non MT safe code
    or document non MT safe functions.

best regards,
Przemek
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to