Multithreading recommendation based on program description
        Posted  
        
            by user260197
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by user260197
        
        
        
        Published on 2010-03-10T15:41:05Z
        Indexed on 
            2010/03/12
            7:57 UTC
        
        
        Read the original article
        Hit count: 1057
        
I would like to describe some specifics of my program and get feedback on what the best multithreading model to use would be most applicable. I've spent a lot of time now reading on ThreadPool, Threads, Producer/Consumer, etc. and have yet to come to solid conclusions.
I have a list of files (all the same format) but with different contents. I have to perform work on each file. The work consists of reading the file, some processing that takes about 1-2 minutes of straight number crunching, and then writing large output files at the end.
I would like the UI interface to still be responsive after I initiate the work on the specified files.
Some questions:
- What model/mechanisms should I use? Producer/Consumer, WorkPool, etc.
- Should I use a BackgroundWorker in the UI for responsiveness or can I launch the threading from within the Form as long as I leave the UI thread alone to continue responding to user input?
- How could I take results or status of each individual work on each file and report it to the UI in a thread safe way to give user feedback as the work progresses (there can be close to 1000 files to process)
Update:
Great feedback so far, very helpful. I'm adding some more details that are asked below:
- Output is to multiple independent files. One set of output files per "work item" that then themselves gets read and processed by another process before the "work item" is complete 
- The work items/threads do not share any resources. 
- The work items are processed in part using a unmanaged static library that makes use of boost libraries. 
© Stack Overflow or respective owner