随笔分类 -  多线程

线程数设置
摘要:转自 架构师之路 Web-Server有个配置,工作线程数。 Service一般也有个配置,工作线程数。 经验丰富的架构师,懂得如何配置这些参数,使得系统的性能达到最优:有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。 “线程数”的设置依据,是本文要 阅读全文

posted @ 2019-12-20 15:30 DeeperMiner 阅读(379) 评论(0) 推荐(0)

Net定时器 【转载】
摘要:【转载】 Timer Timer是.NET内置的定时器类,它位于命名空间System.Timers下。Timer是一个基于服务器端的计时器,提供了Interval属性来设置重复触发定时任务的间隔(单位为毫秒),触发事件则由Elapsed事件来指定。另外,还可以通过AutoReset属性来设置Time 阅读全文

posted @ 2019-12-06 10:00 DeeperMiner 阅读(613) 评论(0) 推荐(0)

【转】委托的三种调用示例(同步调用 异步调用 异步回调)
摘要:本文将主要通过同步调用、异步调用、异步回调三个示例来讲解在用委托执行同一个加法类的时候的的区别和利弊。 首先,通过代码定义一个委托和下面三个示例将要调用的方法: 一、同步调用 委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。 阅读全文

posted @ 2018-12-05 09:49 DeeperMiner 阅读(217) 评论(0) 推荐(0)

【转】线程堆栈
摘要:这是一篇转发的文章,我对他进行了格式化而已,原文出处不详。 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员 阅读全文

posted @ 2018-11-18 18:58 DeeperMiner 阅读(796) 评论(0) 推荐(0)

[.net]ConcurrentBag源码分析
摘要:ConcurrentBag根据操作线程,对不同线程分配不同的队列进行数据操作。这样,每个队列只有一个线程在操作,不会发生并发问题。其内部实现运用了net4.0新加入的ThreadLocal线程本地存储功能。各个队列间通过链表维护。 其内部结构如下: 1、获取线程本地队列: 1 /// <summar 阅读全文

posted @ 2018-11-15 17:48 DeeperMiner 阅读(320) 评论(0) 推荐(0)

【转】Leader-Follower线程模型
摘要:上图就是L/F多线程模型的状态变迁图,共6个关键点: (1)线程有3种状态:领导leading,处理processing,追随following (2)假设共N个线程,其中只有1个leading线程(等待任务),x个processing线程(处理),余下有N-1-x个following线程(空闲) 阅读全文

posted @ 2018-10-17 14:09 DeeperMiner 阅读(175) 评论(0) 推荐(0)

BeginInvoke & Invoke
摘要:Winform: 1.BeginInvoke是将事件处理消息压入application的消息泵,实现的是win32的postmessage机制。压入消息泵后不等执行完即可返回。 2.Invoke是将事件处理消息直接推给消息泵并等待执行完成后,才返回,实现win32的sendmessage机制。 Ac 阅读全文

posted @ 2018-08-29 11:50 DeeperMiner 阅读(135) 评论(0) 推荐(0)

操作系统下spinlock锁解析、模拟及损耗分析
摘要:关于spinlock 我们在知道什么是spinlock之前,还需要知道为什么需要这个spinlock?spinlock本质就是锁,提到锁,我们就回到了多线程编程的混沌初期,为了实现多线程编程,操作系统引入了锁。通过锁能够保证在多核多线程情况下,对临界区资源进行保护,从而保证操作数据的一致性。 锁 那 阅读全文

posted @ 2018-06-07 23:37 DeeperMiner 阅读(2666) 评论(0) 推荐(0)

[.net 多线程]ThreadPool的安全机制
摘要:ThreadPool类,有两个方法我们没有用到,UnsafeQueueUserWorkItem 和UnsafeRegisterWaitForSingleObject。 为了完全理解这些方法,首先,我们必须回忆 .NET框架中安全策略是怎么运作的。 Windows安全机制是关注资源。操作系统本身允许对 阅读全文

posted @ 2018-05-23 22:48 DeeperMiner 阅读(207) 评论(0) 推荐(0)

[.net 多线程]Task
摘要:C# 异步编程Task整理(一) c# .Net并行和多线程编程之Task学习记录! .NET 实现并行的几种方式(一) Dispatcher介绍 【C#学习笔记】使用C#中的Dispatcher 用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler 阅读全文

posted @ 2018-05-23 20:12 DeeperMiner 阅读(161) 评论(0) 推荐(0)

[.net 多线程]异步编程模式
摘要:.NET中的异步编程 - EAP/APM 从.NET 4.5开始,支持的三种异步编程模式: 基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) 异步编程模型(APM,Asynchronous Programming Model) 基于任务的编程模 阅读全文

posted @ 2018-05-23 11:18 DeeperMiner 阅读(434) 评论(0) 推荐(0)

[.net 多线程]ThreadPool
摘要:两种出发模式:定时8s出发,事件触发器出发(autoresetevent) 阅读全文

posted @ 2018-05-22 22:47 DeeperMiner 阅读(148) 评论(0) 推荐(0)

[.net 多线程]SpinWait
摘要:《CLR via C#》读书笔记-线程同步(四) 混合线程同步构造简介 之前有用户模式构造和内核模式构造,前者快速,但耗费CPU;后者可以阻塞线程,但耗时、耗资源。因此.NET会有一些混合了两者的构造,《CLR via C#》的作者给这些构造起了一个别名:混合线程同步构造(Hybrid Thread 阅读全文

posted @ 2018-05-20 17:56 DeeperMiner 阅读(404) 评论(0) 推荐(0)

[.net 多线程 ]ReaderWriterLock
摘要:ReaderWriterLock 用于同步对资源的访问。在任一特定时刻,它允许多个线程同时进行读访问,或者允许单个线程进行写访问。在资源不经常发生更改的情况下,ReaderWriterLock 所提供的吞吐量比简单的一次只允许一个线程的锁(如 Monitor)更高。 在多数访问为读访问,而写访问频率 阅读全文

posted @ 2018-05-17 23:10 DeeperMiner 阅读(365) 评论(0) 推荐(0)

[.net 多线程]Barrier
摘要:当需要【一组任务】并行地运行一连串的阶段,但是每一个阶段都要等待所有他任务完成前一阶段之后才能开始,可以通过Barrier实例来同步这一类协同工作。Barrier初始化后,将等待特定数量的信号到来,这个数量在Barrier初始化时指定,在所指定的信号个数已经到来后,Barrier将执行一个指定的动作 阅读全文

posted @ 2018-05-17 22:10 DeeperMiner 阅读(248) 评论(0) 推荐(0)

[.net 多线程]CountdownEvent
摘要:System.Threading.CountdownEvent 是一个同步基元,它在收到一定次数的信号之后,将会解除对其等待线程的锁定。CountdownEvent在初始化时有一个初始计数量,在每个工作项在完成时调用 Signal。每次调用Signal 时,信号计数都会递减 1。 在主线程上,对 W 阅读全文

posted @ 2018-05-17 21:44 DeeperMiner 阅读(125) 评论(0) 推荐(0)

[.net 多线程]AutoResetEvent, ManualResetEvent
摘要:ManualResetEvent: 通知一个或多个正在等待的线程已发生事件,允许线程通过发信号互相通信,来控制线程是否可心访问资源。 Set() : 用于向 ManualResetEvent 发送信号,使其取消阻塞状态(唤醒进程)或者开始阻塞进程,这基于 ManualResetEvent 的初始状态 阅读全文

posted @ 2018-05-08 23:05 DeeperMiner 阅读(245) 评论(0) 推荐(0)

[.net 多线程]Semaphore信号量
摘要:信号量(Semaphore)是一种CLR中的内核同步对象。与标准的排他锁对象(Monitor,Mutex,SpinLock)不同的是,它不是一个排他的锁对象,它与SemaphoreSlim,ReaderWriteLock等一样允许多个有限的线程同时访问共享内存资源。Semaphore就好像一个栅栏, 阅读全文

posted @ 2018-05-07 23:20 DeeperMiner 阅读(326) 评论(0) 推荐(0)

[.net 多线程]Mutex
摘要:Mutex是可以进程间同步的同步基元。 使用默认属性初始化 Mutex 类的新实例。 使用默认属性初始化 Mutex 类的新实例。 使用 Boolean 值(指示调用线程是否应具有互斥体的初始所有权)初始化 Mutex 类的新实例。 使用 Boolean 值(指示调用线程是否应具有互斥体的初始所有权 阅读全文

posted @ 2018-05-06 16:39 DeeperMiner 阅读(1187) 评论(0) 推荐(0)

[.net 多线程]volatile 摘录
摘要:一、volatile 介绍 volatile 关键字指示一个字段可以由多个同时执行的线程修改。 声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制。 这样可以确保该字段在任何时间呈现的都是最新的值。 volatile 修饰符通常用于由多个线程访问但不使用 lock 语句对访问 阅读全文

posted @ 2018-05-06 15:29 DeeperMiner 阅读(263) 评论(0) 推荐(0)

导航