我有两个语句obja.talk();
objb.talk();这两个语句目前是顺序执行的,我想问问,能不能同时执行代码该怎么写呢
objb.talk();这两个语句目前是顺序执行的,我想问问,能不能同时执行代码该怎么写呢
解决方案 »
- 求助~~~~~winform实现远程读取excel,并能在线编辑,预览
- 大神救救!!!C#获取html源文件很不稳定,对同一个网页,有时对,有时错
- 大家好,.NET的人面试JAva的人会有什么后果?进来看题目
- 紧急求助,button和tableLayoutPanel问题
- 请问下检查某台机器是否网络通畅?
- 关于封装的问题
- 紧急求助!!!VS2005不能装
- 把 ExecuteReader 方法写到类里面怎么关闭连接数据库啊?
- 怎么将Fi[]装到DataSet里,我要在datalist中绑定--急
- 如何实现发送net send消息?
- treeview的checkbox问题(立即给分)
- 谁有C#2。0的主细表录入例子给一个,谢谢
专业的 .NET 技术社区
http://forum.entlib.net.cn
System.Threading.Thread tb = new System.Threading.Thread(new System.Threading.ThreadStart(objb.talk));
ta.Start();
tb.Start();
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace PublicControl.Basic
{
/// <summary>
/// 为双核CPU优化的双线程控制处理装置
/// </summary>
public abstract class DoubleThreadManage:IDisposable
{
Thread Thread1;
Thread Thread2; AutoResetEvent MianManualResetEvent = new AutoResetEvent(false);
AutoResetEvent ManualResetEvent1 = new AutoResetEvent(false);
AutoResetEvent ManualResetEvent2 = new AutoResetEvent(false); bool run = true; bool mainset1 = false;
bool mainset2 = false;
/// <summary>
/// 空构造
/// </summary>
public DoubleThreadManage()
{
Thread1 = new Thread(new ThreadStart(Thread1Run));
Thread2 = new Thread(new ThreadStart(Thread2Run));
Thread1.Name = "CPU1";
Thread2.Name = "CPU2"; Thread1.Start();
Thread2.Start();
}
/// <summary>
/// 需要CPU1执行的处理
/// </summary>
protected abstract void CPU1Execute();
/// <summary>
/// 需要CPU2执行的处理
/// </summary>
protected abstract void CPU2Execute(); /// <summary>
/// 使用多线程执行
/// </summary>
public void Execute()
{
mainset1 = false;
mainset2 = false;
ManualResetEvent1.Set();
ManualResetEvent2.Set();
MianManualResetEvent.WaitOne();
}
void Thread1Run()
{
while(run)
{
try
{
ManualResetEvent1.WaitOne();
CPU1Execute();
}
finally
{
mainset1 = true;
SetMainThread();
}
} } void Thread2Run()
{
while(run)
{
try
{
ManualResetEvent2.WaitOne();
CPU2Execute();
}
finally
{
mainset2 = true;
SetMainThread();
} } } void SetMainThread()
{
if(mainset1 && mainset2)
{
MianManualResetEvent.Set();
} } #region IDisposable 成员 public void Dispose()
{
Thread1.Abort();
Thread2.Abort();
} #endregion
}
}
CPU同时执行这端代码,并完成?这个似乎是到不到的。因为你无法控制CPU的调度,所以无法保证他的开始时间和结素时间,以及时间片到了。用多线也不能完全保证同时执行,毕竟2个线程的启动也有先后。
例如:i=2,那么单线程的效率不比多线程差,多线程主要是为了解决并发的一些问题,在量大多的情况下就可以
看出他的好处了,例如asp.net,每个页面的请求都会在自己的线程中.