当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
可以还是不可以?如果不可以,那么一个进程可以同时多个线程并发执行吗?这2个问题我到现在没有怎么搞明白?
新人没有分,请大鸟们帮下小弟!多线程对象并发进程
可以还是不可以?如果不可以,那么一个进程可以同时多个线程并发执行吗?这2个问题我到现在没有怎么搞明白?
新人没有分,请大鸟们帮下小弟!多线程对象并发进程
解决方案 »
- AJAX 4.0 错误
- 为什么按照jsp、html的格式写、这里会报错
- css 框架 grid的困惑 Using Nesting Grids
- 关于移动WEB控件导入的问题???急啊 高手帮帮忙
- 求 《ASP.NET性能高级编程》 示例代码
- VS2005中编译浏览运行正确 但是通过IIS实施的时候出现错误!!????
- 求ASP.NET经典入门书籍!!
- 通过url传值的问题
- VS2005发布网站后,浏览网站为何出现"服务器不可使用"?
- 想删除文件,只能计算出文件名,但却不知道扩展名,怎么办?(vb.net)
- window.open打开新页面在google浏览器下的问题
- 请教为何定义的变量没有顺利赋值~?
担心的是变量(数据),如果数据是公共的,那么就有可能存在若干线程同时操作该变量,
比如A+10; A是公共变量
线程可以还是不可以?如果不可以,那么一个进程可以同时多个线程并发执行吗?能否与其他线程同时执行,取决cpu的架构《操作系统之哲学原理》 你可以看看
线程就像虚拟的cpu
我们在代码申明运行:线程A, 线程B, 线程C .....
在单核的情况下,他们不是同时运行的,某一时刻,cpu只能运行一个线程
是
线程A 使用cpu一小段时间
线程B 使用cpu一小段时间
线程C 使用cpu一小段时间
..... .................
其中的有可能出现线程A运行方法,运到到一半,就轮到线程B使用CPU了,
这个时候,操作系统会把线程A运行时的堆栈情况保存下来,再次轮到线程A使用cpu的时候,
在还原堆栈,继续运行~
在多核的情况下,线程才可是同时运行的。
比如A+10; A是公用变量(静态变量)线程A将 A赋值为10;这个时候到线程B,由于A是公用变量(static),所以B也可以操作,所以线程B将 A赋值为20这个时候又到线程A,那么就是 20+10=30了,按线程A的目标是10+10=20的
主线程 new Thread 开一个支线程在支线程中 用delegate (委托)执行要操作的方法,
用委托BeginInvoke执行改委托,得到一个IAsyncResult的结果
并一直判断 IAsyncResult的IsCompleted(表示异步是否执行完成)
若执行完成,用EndInvoke 得到异步操作的结果,再用主线程上的Invoke 执行显示结果
(应为主线程,只做了一件事,开了一支线程。异步调用 和等待异步的结束,都是支线程做的,这样主线程不会假死,当主线程要显示结果了,直接操作是有问题的,应为跨了线程!只能用Invoke )
其实人工方式让他异步!!