Computer Chess Club Archives


Search

Terms

Messages

Subject: Multi-threading issues

Author: Russell Reagan

Date: 14:10:12 11/07/02


I would like to add multi-threading into my engine, to make it interface more
easily with winboard, and eventually play around with supporting SMP. I have a
few questions about multi-threading issues however.

I would like to be portable, but that seems rather difficult. I asked about
pthreads, and someone said they aren't really that portable, and recommended
using SDL (www.libsdl.org). What is the best bet if I eventually want to support
linux/unix in addition to windows?

Secondly, I like the Interlocked functions on Windows. Is there anything similar
on Linux or Unix?

Lastly, is there any way to write your own routines to make your threads work
correctly? Or is it something that has to be implemented at the OS level? What's
wrong with passing messages between threads using simple atomic operations? For
example, if I have an input thread, and I want to signal my search thread that
it should stop, why can't I set a global variable that the search thread reads
from? It seems like it would work if you did message passing using one way
variables (like thread1 only writes to var1 and thread2 only reads var1, thread2
only writes to var2, thread1 reads var2, etc.). In Crafty there looks like some
code that isn't OS specific, but I don't see how it avoids synchronization
problems.

Multi-threading makes me feel quite insecure that my program is running
bug-free. It seems like you have to be an expert on the subject before you can
even begin to spot potential bugs. I guess it's best to stick to as few shared
variables as possible?

In summary, I'm lost...

Russell



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.