我有两个语句obja.talk();
objb.talk();这两个语句目前是顺序执行的,我想问问,能不能同时执行代码该怎么写呢

解决方案 »

  1.   

    多线程--------------------------------
    专业的 .NET 技术社区
    http://forum.entlib.net.cn
      

  2.   

    System.Threading.Thread ta = new System.Threading.Thread(new System.Threading.ThreadStart(obja.talk));
    System.Threading.Thread tb = new System.Threading.Thread(new System.Threading.ThreadStart(objb.talk));
    ta.Start();
    tb.Start();
      

  3.   


    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
        }
    }
      

  4.   

    ...双核的计算机都可以获得益处...单核CPU..使用此方法可以使用..但带来不了效率上的提高..
      

  5.   

    同时执行的概念是什么?
    CPU同时执行这端代码,并完成?这个似乎是到不到的。因为你无法控制CPU的调度,所以无法保证他的开始时间和结素时间,以及时间片到了。用多线也不能完全保证同时执行,毕竟2个线程的启动也有先后。
      

  6.   

    如果你的过程执行很快,那基本上是先后执行。
    例如:i=2,那么单线程的效率不比多线程差,多线程主要是为了解决并发的一些问题,在量大多的情况下就可以
    看出他的好处了,例如asp.net,每个页面的请求都会在自己的线程中.