[fpc-pascal] getting started with threads

Mark Emerson ChiefAngel at angelbase.com
Fri Sep 18 03:32:41 CEST 2009


Nice to see you posted this.  Love, Dad

On Thursday 17 September 2009 06:07:48 pm David Emerson wrote:
> I am getting started with threads (linux/cthreads) and I'm very happy so
> far, but unsure of the best way to tackle my situation.
>
> I have a program that needs to perform about 10,000 independent tasks,
> which usually involve waiting for I/O; thus it makes sense to use
> several threads so that some waiting can be done in parallel. I thought
> I'd try it with 10 threads.
>
> When a thread completes its task, I'd like it to simply request a new
> task from the queue. The best way I could think to do this was to have
> a task assignment function (which accesses a global variable and
> returns a task id, marking it as pending.)
>
> But how can I prevent race conditions? If threads X and Y happen to call
> the task assignment function at the same time, it seems to me that they
> could both be assigned to the same task. I know that this is a problem
> which has been addressed at great length in the computer science
> world ... so what's the easiest way for me to address it here and now?
>
>
> While writing this message it dawned on me that I probably need an event
> loop (I'm writing a console app) which will, e.g., sleep for 1 second
> and then check on the status of each thread's work. Then the main loop
> can assign a new task by starting a new thread, whenever it finds one
> that is finished. That puts the assignment task back in the main loop
> where there is no race condition.
>
> Do I even need to send this message? It would be nice to get a little
> input and see if I'm on the right track :)
>
> Cheers,
> David
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal






More information about the fpc-pascal mailing list