Re: [GUI] GUIs and events (was: Re: Concurrency)

Glynn Clements wrote:
But non-thread-safe toolkits still exist. X itself isn't necessarily thread-safe (thread-safety is optional; AFAIK, XFree86 is thread-safe, but some other implementations aren't), and toolkits built atop X tend to be thread-safe only if the underlying X libraries are.
... but I know of no reason why a thread-safe toolkit couldn't be based on a non-threadsafe one.
1. You need to run a specific sequence of toolkit operations without any other operations being interleaved.
Yes.
Even if the toolkit is thread-safe, the application itself will still have critical sections with regard to its use of the toolkit.
Granted. I don't mean that the CGA should do the user's work - it should just do the synchronization that falls within it's scope.
And if the application has to do its own locking some of the time, it may be better to just shift the general problem onto the application.
The main reason why I don't like that is the fact that some toolkits are half-threadsafe and require some operations to be done from certain OS threads. Other toolkits already are threadsafe and require hardly any synchronization on the user's part. Writing a CGA backend with proper synchronization can be done IMO, but writing an application that caters to the different synchronization needs of different backends is hard (You'd need to read the docs for GTK, Win32, Carbon/Cocoa, etc. in order to do it properly).
That avoids substantially complicating the toolkit code for a case which is seldom used (most GUI programs only call the toolkit from one thread).
There seems to be some interest in using Concurrent Haskell for writing GUIs. I fear it will be next to impossible to use Concurrent Haskell in the GUI part of an application if CGA does not automatically do the necessary locking. If people don't have a problem with saying that all CGA calls should come from one (Haskell) thread, then I have no problem with not making the first version of CGA threadsafe. For version 2, we'll know better a) wether we really need it and b) how much work it will be. Cheers, Wolfgang
participants (1)
-
Wolfgang Thaller