[Info-vax] Apache + mod_php performance

Arne Vajhøj arne at vajhoej.dk
Tue Oct 1 19:46:53 EDT 2024


On 10/1/2024 8:16 AM, Simon Clubley wrote:
> On 2024-09-30, Arne Vajhøj <arne at vajhoej.dk> wrote:
>> On 9/30/2024 9:36 PM, Lawrence D'Oliveiro wrote:
>>> On Mon, 30 Sep 2024 20:48:53 -0400, Arne Vajhøj wrote:
>>>> The world is moving from forking processes to starting threads.
>>>
>>> That was tried in the 1990s -- threads for everything, even multithreaded
>>> GUIs. It was soon discovered that was not a great idea.
>>
>> Practically all GUI's are multi-threaded.
>>
> 
> No. The GUIs I know of (GTK, Android, etc) are all single threaded and any
> other threads which need to use the GUI need to queue a request on the GUI
> thread.
> 
> For example, in Android, you can define a Handler on the GUI thread which
> receives messages from other threads:
> 
> https://developer.android.com/reference/android/os/Handler
> 
> I tend to use:
> 
> https://developer.android.com/reference/android/os/Handler#sendMessage(android.os.Message)
> 
> to send messages from the other threads to the GUI thread.
> 
>> At least a main thread and an event thread.
>>
> 
> No. In the GUIs I am aware of, the main GUI thread _is_ the event thread.

OK.

I am used to Java Swing and .NET WinForms where event thread is not
main thread.

But I guess it sort of makes sense to combine them. Main thread
usually doesn't do anything after kicking of the GUI stuff.

But any time one need to do anything time consuming in the GUI
then it needs to be done in its own thread but GUI updates
need to be done by the GUI thread.

Java Swing:

EventQueue.invokeLater(() -> { ... });

or:

SwingUtilities.invokeLater(() -> { ... });

.NET WinForms:

if(ctl.InvokeRequired)
{
     ctl.Invoke(new Action(() => ...));
}
else
{
     ...
}

Arne



More information about the Info-vax mailing list