博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net网络编程 1.多线程
阅读量:5153 次
发布时间:2019-06-13

本文共 1713 字,大约阅读时间需要 5 分钟。

一 前言

1.为什么网络编程要用到多线程?

     在网络编程中经常会遇到网络阻塞或者网络等待等情况,处理这些情况就会等待很长时间,如可不加多线程处理就会出现执行时间过长,容易出现错误,反应迟钝等等状况,使用多线程后就会大大提高程序的健壮性和伸缩新性能。

2.进程和线程的区别

  一个程序至少有一个进程,形象点说,你开QQ就是打开了一个进程,但是你还要同时和到几个人聊天,打开好几个聊天窗口,每个聊天窗口就是一个线程,(所以同一进程可以划分为若干个线程,每个线程都有自己的寄存器等等,但是代码区是共享的)

 

二 多线程基础

     在学习多线程寄基础前,先给大家一个基础的宏观的概念,在这部分分为8个部分:

    1.启动线程   2.终止线程  3.合并线程  4.线程休眠  5.线程优先级   6.同步   7.线程池应用

    线程的应用用到了Thread类   他的主要方法有:

    1.Abort         终止线程

    2.Interrupt   中断线程

  3.join            阻塞调用线程,直到某个线程终止时为止

  4.Sleep     睡眠

 

先来上的简单的例子:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            Thread thread = new Thread(new ThreadStart(() => {                while (true)                {                    Thread.Sleep(100);                    Console.WriteLine("111");                }            }));            thread.Start();    //启动线程            //thread.Interrupt();  //中断线程  会抛出异常            //thread.Abort();      //终止线程              Thread.Sleep(2000);  //主线阻塞2s            thread.Suspend();   //线程挂起                        Thread thread2 = new Thread(new ThreadStart(() =>            {                //thread.Start();   //这里有异常 [线程正在运行或被终止;它无法重新启动。]                //为什么这里会报错呢?  如果想开始重新启动一个现有的进程 只能将之前的挂起 然后继续执行                //或者重新New一个thread对象                thread.Resume();    //唤醒挂起的线程                while (true)                {                    Thread.Sleep(100);                    Console.WriteLine("222");                }            }));            thread2.Start();    //启动线程2            Console.ReadLine();        }    }}

  

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/tianyong/p/4123820.html

你可能感兴趣的文章
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty's Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
js兼容公用方法
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>