c#多线程的同步和异步可以举例说下吗?
c#多线程的同步和异步可以举例说下吗? 多线程 C# --------------------编程问答-------------------- 同步就是I个线程处理时,其他线程不能访问该线程访问的资源,异步就是没有顺序关系,同一个资源,任意线程可以随意访问 --------------------编程问答-------------------- thread th1=new thread...thread th2=new thread...
th1.isbackground=true
th2.isbackground=true
th1.start();
th2.start()
这个是同步的还是异步的?调用的方法就是一个循环 --------------------编程问答--------------------
这个应该是异步吧.
其实你这个只是创建了两个后台线程.
他们是不相关的,同步主要的针对于域中同一个资源的访问.同步的话,是控制对资源的访问,防止一个线程未访问完成另一个线程就访问,这样就会很不安全.
class AState {--------------------编程问答-------------------- 呵呵,知道了 --------------------编程问答-------------------- 参考这里:http://msdn.microsoft.com/zh-cn/library/ms228963.aspx --------------------编程问答-------------------- 卤煮概念混淆了奥。
private int state = 1;
private static AState syc = new AState();
void DoSomeThingDangerous(int nLoop) { //传入1.
if(state == 1) //非同步,假设线程A判断正确后,线程切换,B也判断正确执行"now is 2",又切换回线程A还是打印"now is 2",这就是典型的不安全.
Console.WriteLine("now is " + nLoop);
state = 1;
}
void DoSomeThingNormal(int nLoop) { //传入1.
lock(syc) { //同步,只能是该线程访问结束该域后别的线程才能访问.
if(state == 1)
Console.WriteLine("now is " + nLoop);
state = 1;
}
}
}
(1)线程只有同步的概念吧,指的是当多个线程同时操作一个公共资源时会出现问题。比如你即往文件里写数据,同时又读,那你读的到底是上一时刻的还是这一时刻的?所以要在读的时候阻止写,这就叫同步。
(2)异步指的是某种操作。比如异步套接字,异步回调等。比如你现在要打电话找物业给你开门(因为你没带钥匙),呢么就有俩种方式:1.你就坐楼下等物业,他们不来你就死等,因为你回家还有好多事要忙呢,很急。
2.你可以先去附近草丛溜溜,反正也没事,等物业的人来了后告诉你一声你在回家。
前者就是同步操作,后者就是异步操作。 --------------------编程问答-------------------- 同步,就是被调用者等调用者操作完了再继续,异步是指,调用者触发被调用者,然后继续,至于什么时候被调用者结束,它自己通知调用者。我们知道,多线程是并发执行的,顺序不可预测,所谓线程同步就是指明确规定某个线程的执行顺序,进行等待。 --------------------编程问答-------------------- 简单点,同步就是同时只能有一个程序在干,异步就是同时可以多个在干
补充:.NET技术 , C#