C# 當中的執行緒

作品

書籍

課程

程式集

小說集

論文集

散文集

影片集

編輯雜誌

程式人

電子書

JavaScript

計算語言學

微積分

Blender 動畫

C# 語言

系統程式

高等 C 語言

Java

Android

Verilog

Wikidot

R 統計軟體

機率統計

計算機數學

組合語言

人工智慧

開放原始碼

網路資源運用

計算機結構

相關訊息

常用工具

友站連結

在家教育

RSS

最新修改

網頁列表

簡體版

English

簡介

C# 支援多執行緒 (線程) 的概念,多執行緒在網路程式設計當中具有相當重要的用途,幾乎所有網路程式都會依賴多執行緒去處理對方的連線,在學習網路程式設計之前,讀者有必要先理解多執行續的概念。

程式範例 1

以下程式建立了兩個執行緒 (thread1, thread2),這兩個執行緒都會執行 count 函數,從 0 數到 4。但是在執行結果中,讀者可以發現兩個執行緒是交錯進行的,因此印出的結果是 (0,0,1,1,2,2,3,3,4,4) 這樣的序列,而非 (0,1,2,3,4, 0,1,2,3,4) 這樣的序列,這代表兩個 count() 函數同時都在執行,這就是多執行續的基本功效。

using System;
using System.Threading;

class ThreadTest
{
    public static void Main(String[] args)
    {
        Thread thread1 = new Thread(new ThreadStart(count));
        Thread thread2 = new Thread(new ThreadStart(count));
        thread1.Start();
        thread2.Start();
        thread1.Join();
        thread2.Join();
    }

    public static void count()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(i);
            Thread.Sleep(10);
        }
    }
}
D:\myweb\teach\CSharpNetworkProgramming>csc ThreadTest.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

D:\myweb\teach\CSharpNetworkProgramming>ThreadTest
0
0
1
1
2
2
3
3
4
4

程式範例 2

using System;
using System.Threading;

class SimpleThread {
    String name;

    public static void Main(String[] args) {
        SimpleThread a = new SimpleThread("A");
        SimpleThread b = new SimpleThread("B");
        Thread athread = new Thread(new ThreadStart(a.run));
        Thread bthread = new Thread(new ThreadStart(b.run));
        athread.Start();
        bthread.Start();
    }

    SimpleThread(String pName) {
        name = pName;
    }

    public void run() {
        for (int i=0; i<10000; i++) {
            String line = name+":"+i;
            Console.WriteLine(line);
        }
    }
}

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License