POV-Ray : Newsgroups : povray.off-topic : Echoes from the past : Re: Echoes from the past Server Time
3 Sep 2024 15:16:35 EDT (-0400)
  Re: Echoes from the past  
From: Invisible
Date: 18 Nov 2010 04:26:15
Message: <4ce4f137$1@news.povray.org>
On 17/11/2010 06:36 PM, Warp wrote:

>    Actually a surprisingly large number of GUI applications are multithreaded,
> by necessity.

I wish *more* GUI applications were multithreaded. :-S

(For example, closing the CD tray is enough to lock up almost the entire 
Windows Explorer shell until the OS can determine whether there is a CD 
in the drive. Similarly, accidentally clicking on drive A: will do more 
or less the same thing. WTF, people?!)

>    One industry where multithreading has been all the rage in later years
> is the gaming industry.

Really? I haven't been paying attention especially closely. Last time I 
looked, the advice was "don't ever buy a multi-core CPU for a gaming 
machine because no games support it yet". Has that finally changed now?

>    The problem of multithreading in a game engine is quite a difficult one.

The magic problem I found was that when I play games on a dual-core 
system, the game speeds up. As in, like, you can now run 7x faster 
(which is great), and the enemies can shoot back at you 7x faster. And 
the graphics flicker. And the sound gets out of sync. And basically it's 
impossible to play. Setting the task affinity to pin the game to one 
core fixes the problem. (I gather it's to do with the real-time clock 
being per-core or something like that...)

> One of the major problems is that a typical game engine needs to perform
> hundreds and hundreds of small tasks on each frame, and distributing these
> tasks to multiple processors efficiently is hard.

Presumably it's hard to balance work evenly. Then there's the problem of 
cache coherence if you try to do too much balancing. (I.e., if the data 
you want is in the cache on core X, trying to process that data from 
core Y is *slower* than not using an extra thread.)

> Just the mutual exclusion
> problem is hard because it needs to be as efficient as possible.

I guess the solution is to avoid the need for mutual exclusion to the 
maximum extent possible. Even if you can make it efficient, by 
definition it reduces the amount of stuff that can happen at once.

> You usually need very specialized lock-free algorithms and
> containers

Using lock-free systems is one good way of avoiding the problem, yes.

> and high-level languages often make developing them difficult.

I can't say. I haven't tried. It's one of those things that I'd like to 
read about someday though. I have no idea how these algorithms work, and 
it sounds interesting.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.