.Net 多线程小结
1.简述
一般一个程序一个进程,代码是存在进程中的,进程本身不执行代码, 执行代码的是线程。
一般一个进程里就一个线程。(一个商店就一个老板娘。)
进程就是在内存中开辟了一个空间。代码,图片。。等就存在这个空间里。代码线程去执行。
默认只有一个线程。
systerm.threading //线程操作的类在这个命名空间下。
2.前台线程与后台线程。
开启一个线程,就是创建一个线程对象即可。
线程默认情况下都是前台线程。
要把所有的前台线程执行完后,程序才会退出。
进程里默认的线程叫主线程或者默认线程,或UI线程。
后台线程,只要所有的前台线程结束,所有的后台线程就直接结束。
Thread th = new Thread(Sum);
th.Name ="线程1"; 给线程取名。调试的时候可以在输出中看到具体名称。
th.IsBackground = true;
th.Start();
th.Abort(); 强行终止线程。
Thread.Sleep(); 暂停线程,单位是毫秒
Thread cuTh = Thread.CurrentThread 得到当前线程的引用。Thread类型。
TextBox.CheckForIllegalCrossThreadCalls = false; //关闭空间的跨线程访问检查。 否则会出现如下错误


3.线程重入
同一个进程中的多个线程之间可以“并发”执行。
多个线程访问同一资源, 可能造成不同步的情况,这个叫做线程重入。
应对此情况,可加锁处理。
private void CountNum()
{
lock (this)
{
for (int i = ; i < ; i++)
{
int num = int.Parse(textBox1.Text.Trim());
num++;
textBox1.Text = num.ToString();
}
}
}
4.线程对象本质(委托)
4.1 无参方法


ThreadStart ts = new ThreadStart(CountNum);
Thread th = new Thread(ts);
等价于
Thread th = new Thread(CountNum);
本质传的是一个委托对象。 (CountNum是无参方法)
4.2 有参方法
如果需要传有参方法。
则是创建的ParameterizedThreadStart 的委托对象。


传参是在Start方法中传入;start方法有两个重载。


.Net 多线程小结的更多相关文章
- 【转】C#绝对新手之C#中的多线程小结
大概有4种方法: Dispatcher.异步委托.手动多线程.BackgroundWorker,另外还有一个DispatcherTimer,是定时器. 其中Dispatcher与DispatcherT ...
- 【Java基础】Java多线程小结
在说多线程之前,首先要清楚为啥要提出多线程,这就要明白线程和进程间的区别了. 线程和进程间的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单 ...
- Java多线程小结
简述 Java是支持多线程编程的语言,线程相比于进程更加轻量级,线程共享相同的内存空间,但是拥有独立的栈.减少了进程建立.销毁的资源消耗.jdk1.5后对java的多线程编程提供了更完善的支持,使得j ...
- ios 多线程小结----- GCD篇
//3 GCD(充分利用设备的多盒)-------------屏蔽了线程,只能看见任务 队列步骤两步,定制任务,将任务添加到队列.GCD将添加的任务,放到线程中去执行,自动执行,自动释放原则:先进先出 ...
- 多线程---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2013年12月29日更新版) 多线程 技术博客http://www.cnblo ...
- 深入理解java:2. 多线程机制
引言 很多人都对其中的一些概念不够明确,如同步.并发等等,让我们先理清一些概念,以免产生误会. 多线程:指的是这个程序(一个进程)运行时,产生了不止一个线程. 并行与并发: 并行:多个cpu实例或者多 ...
- Java系列笔记(5) - 线程
我想关注这个系列博客的粉丝们都应该已经发现了,我一定是个懒虫,在这里向大家道歉了.这个系列的博客是在我工作之余写的,经常几天才写一小节,不过本着宁缺毋滥的精神,所有写的东西都是比较精炼的.这篇文章是本 ...
- pthread多线程编程的学习小结
pthread多线程编程的学习小结 pthread 同步3种方法: 1 mutex 2 条件变量 3 读写锁:支持多个线程同时读,或者一个线程写 程序员必上的开发者服务平台 —— DevSt ...
- Linux多线程编程小结
Linux多线程编程小结 前一段时间由于开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,非常烦躁的说,如今抽个时间把之前所学的做个小节.文章内容主要总结于<Linux程序 ...
随机推荐
- loj2291 「THUSC 2016」补退选
ref pkusc 快到了,做点 thusc 的题涨涨 rp-- #include <iostream> #include <cstring> #include <cst ...
- 【Maximum Subarray 】cpp
题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...
- plsql 编程基础
分支 declare --声明变量 a ); b ); c ); begin --开始 a := '小明'; dbms_output.put_line(a); b :; c :; if b > ...
- windows下使用grunt
grunt官网:http://www.gruntjs.org/ 一.安装grunt 先安装node,在http://www.nodejs.org/可以下载安装包直接安装.在命令行下运行: npm in ...
- [python][django学习篇[13]增加markdown_1
1 进入虚拟环境,安装markdwon python install markdown 2 修改视图函数detail def detail(request, pk): # get_object_or ...
- 第二篇:python基础_2
本篇内容 数字 字符串 元祖 字典 列表 集合 for循环 二进制 字符编码 文件处理 一.数字 1.int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2 ...
- 【bzoj3630】[JLOI2014]镜面通道 对偶图+计算几何+网络流最小割
题目描述 在一个二维平面上,有一个镜面通道,由镜面AC,BD组成,AC,BD长度相等,且都平行于x轴,B位于(0,0).通道中有n个外表面为镜面的光学元件,光学元件α为圆形,光学元件β为矩形(这些元件 ...
- 【CCF】JSON查询
#include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...
- jmeter作接口测试入门的简单使用说明
一.添加接口信息 1.添加线程组 (1)路径如下图: (2)部分内容解释 a. Number of Threads(users):线程数 b. Ramp-Up Period(in seconds) ...
- source ~/.bashrc 什么意思
source:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录 https://www.cn ...