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@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal