none
关于程序中的线程问题? RRS feed

  • 问题

  • 在C#编程中,我只在书本上了解过多线程,在实际中没有用过,对线程这个问题很糊涂,也不清楚这个多线程到底要怎么用。
    请各位高手给我讲讲多线程。

    2009年6月27日 9:44

答案

  • 单线程就是一个工作同一时间一个人做,多线程就是一个工作同一时间多个人做。
    但是对于单cpu的多线程程序来说,只是模拟多个人干(对于需要等待io线程来说的接近于实际),对于多cpu,实际上可以同时干。

    好好学习,天天向上。
    2009年6月27日 10:15
  • 你好!
         这个主题比较大,在一个帖子里估计很难将清楚,这里有详细的讲解和实例,希望对你有帮助,如果学习中遇到问题,我们继续交流啊!
         http://msdn.microsoft.com/zh-cn/library/5xt1dysy.aspx
    周雪峰
    2009年6月27日 11:22
    版主
  • 这些例子很多,比如开始.现在6个工人因工作需要,6个人要挖一条隧道,因为是多个人做,那么我们用多线程来做.

    首先定义成员类 UserInfo(表示成员信息),还有一个方法Work()表示工作

           public class UserInfo
        {
            private string _name;
            /// <summary>
            /// 工人名称
            /// </summary>

            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }

           /// <summary>
           /// 线程执行具体方法 注意:必须是Void类型,不能为静态方法
           /// </summary>

            public void Work()
            {
                //这里写要做的工作代码
            }
        }


        现在开始写线程代码
        public class WorkThread
        {
            /// <summary>
            /// 线程执行代码
            /// </summary>

            public void CrazyCoderThread()
            {
                //假设6名工人开始工作
                for (int i = 1; i <= 6; i++)
                {
                    UserInfo u = new UserInfo();
                    u.Name = "6名工人" + i.ToString();
                    Thread t = new Thread(u.Work);
                    t.Start();
                }
            }
        }


    ♡. Microsoft .NET Platform
    2009年6月27日 14:02
  • 多线程与委托事件在.net中是很重要的几个概念之一
    其中要了解的东西会很多,更重要的是实际项目中的运用
    建议楼主可以去找找资料,动手做下demo
    http://www.google.cn/search?hl=zh-CN&newwindow=1&q=c%23+.net+%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%95%99%E5%AD%A6&btnG=Google+%E6%90%9C%E7%B4%A2
    莫让青春付流水
    2009年6月27日 17:46
  • 默认情况下,C# 程序具有一个线程。此线程执行程序中以 Main 方法开始和结束的代码。Main 直接或间接执行的每一个命令都由默认线程(或主线程)执行,当 Main 返回时此线程也将终止。不过,可以创建辅助线程,以便与主线程一起并行执行代码。这些线程通常称为“辅助线程”。

    辅 助线程可以用于执行耗时较多的任务或时间要求紧迫的任务,而不必占用主线程。例如,辅助线程经常用在服务器应用程序中,以便无需等待前面的请求完成即可响 应传入的请求。辅助线程还可用于在桌面应用程序中执行“后台”任务,以便使主线程(用于驱动用户界面元素)保持对用户操作的响应。

    多线程处理解决了吞吐量和响应性的问题,但同时也带来了资源共享问题,如死锁和争用状态。多线程特别适用于需要不同资源(如文件句柄和网络连接)的任务。为单个资源分配多个线程可能会导致同步问题,线程会被频繁阻止以等待其他线程,从而与使用多线程的初衷背道而驰。

     


    Radon
    2009年6月28日 14:36

全部回复

  • 在C#编程中,我只在书本上了解过多线程,在实际中没有用过,对线程这个问题很糊涂,也不清楚这个多线程到底要怎么用。
    请各位高手给我讲讲多线程。

    2009年6月27日 9:46
  • 单线程就是一个工作同一时间一个人做,多线程就是一个工作同一时间多个人做。
    但是对于单cpu的多线程程序来说,只是模拟多个人干(对于需要等待io线程来说的接近于实际),对于多cpu,实际上可以同时干。

    好好学习,天天向上。
    2009年6月27日 10:15
  • 不要重复发帖。
    好好学习,天天向上。
    2009年6月27日 10:15
  • 你好!
         这个主题比较大,在一个帖子里估计很难将清楚,这里有详细的讲解和实例,希望对你有帮助,如果学习中遇到问题,我们继续交流啊!
         http://msdn.microsoft.com/zh-cn/library/5xt1dysy.aspx
    周雪峰
    2009年6月27日 11:22
    版主
  • 这些例子很多,比如开始.现在6个工人因工作需要,6个人要挖一条隧道,因为是多个人做,那么我们用多线程来做.

    首先定义成员类 UserInfo(表示成员信息),还有一个方法Work()表示工作

           public class UserInfo
        {
            private string _name;
            /// <summary>
            /// 工人名称
            /// </summary>

            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }

           /// <summary>
           /// 线程执行具体方法 注意:必须是Void类型,不能为静态方法
           /// </summary>

            public void Work()
            {
                //这里写要做的工作代码
            }
        }


        现在开始写线程代码
        public class WorkThread
        {
            /// <summary>
            /// 线程执行代码
            /// </summary>

            public void CrazyCoderThread()
            {
                //假设6名工人开始工作
                for (int i = 1; i <= 6; i++)
                {
                    UserInfo u = new UserInfo();
                    u.Name = "6名工人" + i.ToString();
                    Thread t = new Thread(u.Work);
                    t.Start();
                }
            }
        }


    ♡. Microsoft .NET Platform
    2009年6月27日 14:02
  • 多线程与委托事件在.net中是很重要的几个概念之一
    其中要了解的东西会很多,更重要的是实际项目中的运用
    建议楼主可以去找找资料,动手做下demo
    http://www.google.cn/search?hl=zh-CN&newwindow=1&q=c%23+.net+%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%95%99%E5%AD%A6&btnG=Google+%E6%90%9C%E7%B4%A2
    莫让青春付流水
    2009年6月27日 17:46
  • 默认情况下,C# 程序具有一个线程。此线程执行程序中以 Main 方法开始和结束的代码。Main 直接或间接执行的每一个命令都由默认线程(或主线程)执行,当 Main 返回时此线程也将终止。不过,可以创建辅助线程,以便与主线程一起并行执行代码。这些线程通常称为“辅助线程”。

    辅 助线程可以用于执行耗时较多的任务或时间要求紧迫的任务,而不必占用主线程。例如,辅助线程经常用在服务器应用程序中,以便无需等待前面的请求完成即可响 应传入的请求。辅助线程还可用于在桌面应用程序中执行“后台”任务,以便使主线程(用于驱动用户界面元素)保持对用户操作的响应。

    多线程处理解决了吞吐量和响应性的问题,但同时也带来了资源共享问题,如死锁和争用状态。多线程特别适用于需要不同资源(如文件句柄和网络连接)的任务。为单个资源分配多个线程可能会导致同步问题,线程会被频繁阻止以等待其他线程,从而与使用多线程的初衷背道而驰。

     


    Radon
    2009年6月28日 14:36