回 帖 发 新 帖 刷新版面

主题:线程问题

using System;
using System.Threading;

// Simple threading scenario:  Start a static method running
// on a second thread.
public class ThreadExample
{

    // The ThreadProc method is called when the thread starts.
    // It loops ten times, writing to the console and yielding 
    // the rest of its time slice each time, and then ends.
    public static void ThreadProc()
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("ThreadProc: {0}", i);
            // Yield the rest of the time slice.
            Thread.Sleep(0);
        }
    }
  
    public static void Main()
    {
        Console.WriteLine("Main thread: Start a second thread.");
        // The constructor for the Thread class requires a ThreadStart 
        // delegate that represents the method to be executed on the 
        // thread.  C# simplifies the creation of this delegate.
        Thread t = new Thread(new ThreadStart(ThreadProc));

        // Start ThreadProc.  On a uniprocessor, the thread does not get 
        // any processor time until the main thread yields.  Uncomment 
        // the Thread.Sleep that follows t.Start() to see the difference.
        t.Start();
        //Thread.Sleep(0);

        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("Main thread: Do some work.");
            Thread.Sleep(0);
        }

        Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends.");
        t.Join();
        Console.WriteLine("Main thread: ThreadProc.Join has returned.  Press Enter to end program.");
        Console.ReadLine();
    }
}


请问在这个程序里面,Main线程算不算一个线程哪???我多写了两个线程Threadpro1,Threadpro2的时候输出结果好像顺序会打乱掉,而按本程序这样的话输出的顺序就是按逻辑顺序输出的。

回复列表 (共2个回复)

沙发

不算是,楼主的程序只是单线程处理程序
但当多写了两个线程Threadpro1,Threadpro2的时候,cpu可能在一个线程未完成时被另一个线程获取了控制权,因而造成结果顺序打乱掉。
可以设定线程的优先级来降低对共享资源的争夺

板凳

Thread t = new Thread(new ThreadStart(ThreadProc));
创建了新线程,当然是多线程。


我来回复

您尚未登录,请登录后再回复。点此登录或注册