这个多线程程序可以在单核处理器上正常工作吗?

时间:2014-01-27 21:02:12

标签: c# multithreading

该程序解析文本文件。它有两个线程。其中一个读取文件,另一个解析文件。这个多线程程序可以在单核处理器上正常工作吗?我在另一个线程创建之前添加了等待线程结束,以便在单核处理器上得到正确的工作。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows.Forms;

namespace lab2Form
{ 
    public partial class Form1 : Form
    {
        private CLogParser m_parser;
        private Thread m_parserThread, m_fileReaderThread;


        public Form1(string logName)
        {           
            InitializeComponent();  
            m_parser = new CLogParser();                
            timer1.Interval = 50;

            m_fileReaderThread = new Thread(m_parser.ThreadReadList);
            m_fileReaderThread.Start(logName);

            m_fileReaderThread.Join(); THE ADDED STRING

            m_parserThread = new Thread(m_parser.ThreadProc);
            m_parserThread.Start(); 

            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (m_parserThread.ThreadState != ThreadState.Stopped)
            {
                m_parser.ShowData(ref dmRequestsGridView, ref URLGridView, ref                      dmDataGridView, ref errorCodesGridView);
            }
            else
            {
                timer1.Stop();
                MessageBox.Show("Parsing Complete!");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:4)

是。通常,您可以愉快地运行具有比物理处理器更多线程的进程 - 如果有的话,如果您有多个物理处理器核心,则会遇到更多线程问题(因为突然可能会发生两个(或更多)事情)时钟周期。

答案 1 :(得分:0)

多任务操作系统比多核架构更长。操作系统只是在线程之间执行上下文切换。单个线程不会被饿死(好吧,如果你做错了什么就可以,但在简单的情况下,它们都会得到一个时间片)。

您无需致电fileReaderThread.Join()