[SDL] What are threads allowed to do?
Albert Cahalan
albert at users.sf.net
Sat Jan 22 08:31:23 PST 2005
On Sat, 2005-01-22 at 11:21, Stephane Marchesin wrote:
> Albert Cahalan wrote:
> >Mere guidelines alone don't make for solid software. Am I to assume
> >that all other SDL functions are unsafe? The same for C library stuff
> >on the various supported platforms? If this is the case, then threads
> >are quite useless.
> >
> That's the bottom line, if you don't understand threads, they do more
> harm than good.
So I "don't understand threads" if I haven't carefully examined
all of the SDL source code for thread-safety problems, along with
careful examination of documentation for Windows, BeOS, MacOS,
Linux, FreeBSD, Solaris...?
By a more common definition, I think I understand threads quite
well. I will admit to understanding them more from the viewpoint
of a kernel hacker and /bin/ps author, but that shouldn't be way
off from the user-centric viewpoint. I know spinlocks aren't so
favored in userspace, and I know there is an appalling lack of
support for the memory barriers and atomic operations needed for
lockless code.
> >I tried using threads, hit memory corruption problems, and...
> >
> Well, show us a small program demonstrating memory corruption with SDL
> threads, and we'll have a chance to find the reason for this problem.
That's a tough order to fill I think.
I saw the problem in Tux Paint, which is one 15469-line file.
(yes, yes, we know -- it grew over time)
One thread was using libSDL_ttf. It scanned through about 200
font files. The thread would open a file, render some test text,
and close the file.
Meanwhile, the main app thread was mostly loading PNG images.
It would load a few hundred perhaps, along with a couple fonts
and perhaps dozens of *.wav files. The main thread has video
and sound going.
More information about the SDL
mailing list