一.線程的優點
1.服務器 一般負載的情況下 線程可以提高效率;
2.使用線程執行的代碼出現故障不會影響主程序,提高程序穩定和可靠性。
二.線程的創建及其常用屬性
1.線程創建
ThreadStart ts1 = new ThreadStart(function2);//線程定義 執行
Thread t1 = new Thread(ts1);
t1.Start();
或者
Thread t1=new Thread(new ThreadStart(function2));
t1.Start();
2.線程常用屬性
Priority 獲取或設置,線程優先級
IsBackgroud 獲取或設置,是否為後台線程
Abort() :終止線程
Start() 開始線程
三.程序實例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Thread2
{
class Program
{
static void function1()
{
for (int i = 0; i < 40; i++)
{
Console.WriteLine(i);
}
}
static void function2()
{
for (int i = 41; i <200; i++)
{
Console.WriteLine(i);
int c = 2;
int x = 0;
int y = c / x;
}
}
static void function3()
{
for (int i = 200; i < 205; i++)
{
Console.WriteLine(i);
//int c = 2;
//int x = 0;
//int y = c / x;
}
}
static void Main(string[] args)
{
Console.WriteLine("Main begin !");
ThreadStart ts = new ThreadStart(function1);//線程定義 執行
Thread t = new Thread(ts);
t.Priority = ThreadPriority.Highest;
t.Start();
Console.WriteLine("Main end!");
ThreadStart ts1 = new ThreadStart(function2);//線程定義 執行
Thread t1 = new Thread(ts1);
//t1.Priority = ThreadPriority.Highest;
//t1.IsBackground = true;//沒執行完 主程序也退出
t1.Start();
function3();//直接執行
Console.WriteLine("Main1111 end!");
}
}
}
a1 = 0x01; //0000 0001
a2 = 0x00; //0000 0000
a3 = 0x03; //0000 0011
a4 = 0x02; //0000 0010
b1 = a1 ^ a2; //0000 0001
b2 = a1 ^ a3; //0000 0010
b3 = a1 ^ a4; //0000 0011
^異或運算符,位值相同為0,不同為1,見上示例.
//
簡單實際問題舉例:
======\=======\=======
======a=======b=======
上面是2條電路,2個開關分別為a和b,打開狀態:\[1],關閉狀態:/[0].
若同時打開或者關閉,兩條電路均不通.
若a打開[1],b關閉[0],電路1通電
======\=======/=======
若a關閉[0],b打開[1],電路2通電
======/=======\=======
綜上,電路在a,b狀態相同時不通[0],在a,b不同時通電[1].
左移運算符(<<)
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a << 2 將a的二進制位左移2位,右補0,
左移1位後a = a * 2;
若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)
將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
操作數每右移一位,相當於該數除以2。
例如:a = a >> 2 將a的二進制位右移2位,
左補0 or 補1 得看被移數是正還是負。