本文主要针对 GKarch 相关文章留作笔记,仅在原文基础上记录了自己的理解与摘抄部分片段。

遵循原作者的 CC 3.0 协议

如果想要了解更加详细的文章信息内容,请访问下列地址进行学习。

原文章地址:https://blog.gkarch.com/threading/part1.html

基础知识

  1. 静态字段是在所有线程当中共享状态的。
  2. 一个线程被阻塞时,不会消耗 CPU 资源。
  3. Join 可以等待另一个线程结束,Sleep 可以将线程阻塞指定的时间,两者使用时线程都是阻塞状态。
  4. Join 可以设置超时时间,当线程执行超过指定时间返回 False。
  5. Thread.Sleep(0) 会释放当前时间片,将 CPU 资源让出给其他线程。
  6. Thread.Sleep(0) 作用与 Thread.Yield() 作用一样,后者只会让出给当前核心的其他线程。
  7. Thread.Yield() 执行时会影响到程序的话,基本可以确定代码存在 Bug。
  8. 在使用 Lambda 表达式启动线程并传入变量的时候,不要在启动线程之后更改被捕获变量的值。
  9. 线程分为前台线程与后台线程,当所有前台线程中止时,程序自动退出。
  10. 可以显式地提高线程优先级,但可能会导致线程饥饿。

线程池

  1. 由于线程创建成本高昂(私有局部变量栈,每个线程默认占用 1 MB内存),所以一般都会使用线程池来进行线程的创建与回收。

  2. 线程池线程可以临时更改其优先级,在回收后会恢复默认状态。

  3. 开发人员可以通过 Thread.CurrentThread.IsThreadPoolThread 属性查询线程是否运行在线程池中。

  4. 通过查询 Task.Result 会导致当前线程阻塞,直到任务执行完成,如果发生错误,则会将异常包装到 AggregateException 异常内进行抛出。

  5. 通过异步委托可以快速创建一个工作线程。

    1. 创建目标方法委托。
    2. 在委托上调用 BeginInvoke() 方法,保存其 IActionResult 返回值。
    3. 需要返回结果时,调用 EndInvoke() 方法,传递保存的 IActionResult 对象。
    class Program
    {
    static void Main(string[] args)
    {
    Func<string, int> work = Work; var result = work.("测试",null,null); Console.WriteLine("获得结果"); work.EndInvoke(result);
    } public static int Work(string inputStr)
    {
    Console.Write(Thread.CurrentThread);
    return inputStr.Length;
    }
    }

    注意:

      上述代码在 .NET Core 平台上是无法运行的。

  6. 异步委托在调用 BeginInvoke() 的时候可以传入回调方法。

  7. 线程池可以通过 ThreadPool.SetMaxThreadsThreadPool.SetMinThreads 进行优化。

C# 多线程学习笔记 - 1的更多相关文章

  1. java多线程学习笔记——详细

    一.线程类  1.新建状态(New):新创建了一个线程对象.        2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

  2. JAVA多线程学习笔记(1)

    JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...

  3. 多线程学习笔记九之ThreadLocal

    目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...

  4. java进阶-多线程学习笔记

    多线程学习笔记 1.什么是线程 操作系统中 打开一个程序就是一个进程 一个进程可以创建多个线程 现在系统中 系统调度的最小单元是线程 2.多线程有什么用? 发挥多核CPU的优势 如果使用多线程 将计算 ...

  5. Java多线程学习笔记(一)——多线程实现和安全问题

    1. 线程.进程.多线程: 进程是正在执行的程序,线程是进程中的代码执行,多线程就是在一个进程中有多个线程同时执行不同的任务,就像QQ,既可以开视频,又可以同时打字聊天. 2.线程的特点: 1.运行任 ...

  6. java 多线程学习笔记

    这篇文章主要是个人的学习笔记,是以例子来驱动的,加深自己对多线程的理解. 一:实现多线程的两种方法 1.继承Thread class MyThread1 extends Thread{ public ...

  7. Java多线程学习笔记--生产消费者模式

    实际开发中,我们经常会接触到生产消费者模型,如:Android的Looper相应handler处理UI操作,Socket通信的响应过程.数据缓冲区在文件读写应用等.强大的模型框架,鉴于本人水平有限目前 ...

  8. Java多线程学习笔记

    进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...

  9. C# 多线程学习笔记 - 3

    本文主要针对 GKarch 相关文章留作笔记,仅在原文基础上记录了自己的理解与摘抄部分片段. 遵循原作者的 CC 3.0 协议. 如果想要了解更加详细的文章信息内容,请访问下列地址进行学习. 原文章地 ...

  10. C# 多线程学习笔记 - 2

    本文主要针对 GKarch 相关文章留作笔记,仅在原文基础上记录了自己的理解与摘抄部分片段. 遵循原作者的 CC 3.0 协议. 如果想要了解更加详细的文章信息内容,请访问下列地址进行学习. 原文章地 ...

随机推荐

  1. oracle数据库学习

    trunc(number[,decimals])--number 待做截取处理的数值:decimals 指明需保留小数点后面的位数     CREATE PUBLIC DATABASE LINK Co ...

  2. javafx由浅到深的 认识(一)

    javafx是一款比较新兴的语言框架,随着javafx越来越实用,估计许多程序员也会慢慢接触它,故我在这里对它由浅到深进行介绍一下. 首先,要了解javafx,就应该先知道.xml文件的布局软件,以往 ...

  3. 利用Google趋势来预测比特币价格

    预测市场是件极其困难和不可能的事情,特别是预测市场的短期行为.长期预期相对而言简单很多,因为很多事情把时间拉长,都可以预测,比如我预测烧汽油的车最终都会消失,把时间拉长,都是没问题的.但是这种预测没法 ...

  4. python第二十二天(面向对象)

    1.面向过程编程: 核心就是过程两个字,过程是指解决问题的步骤,即先干什么后做什么. 基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 优点:复杂的问题流程化.进而简单化 缺点:可扩展 ...

  5. 回文数(vector的使用)

    问题描述一个正整数,如果交换高低位以后和原数相等,那么称这个数为回文数.比如 121,2332 都是回文数,134567 不是回文数. 任意一个正整数,如果其不是回文数,将该数交换高低位以后和原数相加 ...

  6. angularjs和ajax的结合使用 (三)

    转眼九月份了,忙忙碌碌 发现今年还没开过张,写一篇吧. 15年在空闲时就倒腾过angularjs那玩意儿 ,觉得还是挺好的,李金龙那厚厚的一本书,只不过没有系统化应用.最主要的是原来有一个东西没有用到 ...

  7. C++ MD5类封装

    c++ md5 算法封装 md5.h #ifndef MD5_H #define MD5_H #include <string> #include <fstream> /* T ...

  8. C语言可变参数

    前段时候在实现利用redis进行的一个数据库比对的功能,稍微去分析了一下redis里面的源代码,然后发现其中的发送命令接口声明如下: void *redisCommand(redisConnect * ...

  9. Rewrite JSON with Fetch

    1.重写json请求部分:HTML文件代码如下:<html>......<script> var myList = document.querySelector(‘ul‘); ...

  10. Round #2

    题源:来自hzwer整理的题 2014-5-10 NOIP模拟赛 by coolyangzc Problem 1 机器人(robot.cpp/c/pas) [题目描述] 早苗入手了最新的Gundam模 ...