随笔分类 -  C#多线程处理系列

摘要:因为有些人可能会疑惑,将了这么多多线程,到底在实际的应用上有什么作用的呢? 这里我在这里用多线程简单实现了一个文件的下载的功能。服务器端页面:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="FileServer.Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 阅读全文
posted @ 2012-07-28 20:36 Learning hard 阅读(5764) 评论(6) 推荐(3) 编辑
摘要:也不多说了,直接进入主题了一、信号量(Semaphore)信号量(Semaphore)是由内核对象维护的int变量,当信号量为0时,在信号量上等待的线程会堵塞,信号量大于0时,就解除堵塞。当在一个信号量上等待的线程解除堵塞时,内核自动会将信号量的计数减1。在.net 下通过Semaphore类来实现信号量同步。Semaphore类限制可同时访问某一资源或资源池的线程数。线程通过调用 WaitOne方法将信号量减1,并通过调用 Release方法把信号量加1。先说下构造函数:public Semaphore(int initialCount,int maximumCount);通过两个参数来设置 阅读全文
posted @ 2012-07-23 19:17 Learning hard 阅读(7218) 评论(6) 推荐(3) 编辑
摘要:引言:其实这部分内容应该是属于专题四,因为这篇也是讲关于线程同步的,但是由于考虑到用户的阅读习惯问题,因为文章太长了,很多人不是很愿意看包括我也是这样的,同时也有和我说可以把代码弄成折叠的,这样就不会太长的,但是我觉得这样也不怎么便于阅读,因为我看别人的博客的时候,看到有代码是折叠起来的时候很多时候不愿意去点,并且点一下之后同样拉长文章的,然后就看到右边的滚动条变小了,本以为快看完了(意思快学到知识了),一看滚动条后发现还有好长的内容很看, 所以就会给人一种不舒服的感觉吧(如果有和我一样的人的话,你肯定懂的是什么感觉的)。所以我把线程同步放到两篇文章里面来说,其实放到两篇文章里面也有一定原因的 阅读全文
posted @ 2012-07-23 16:02 Learning hard 阅读(5669) 评论(17) 推荐(6) 编辑
摘要:目录:一、线程同步概述二、线程同步的使用三 、总结一、线程同步概述前面的文章都是讲创建多线程来实现让我们能够更好的响应应用程序,然而当我们创建了多个线程时,就存在多个线程同时访问一个共享的资源的情况,在这种情况下,就需要我们用到线程同步,线程同步可以防止数据(共享资源)的损坏。然而我们在设计应用程序还是要尽量避免使用线程同步, 因为线程同步会产生一些问题:1. 它的使用比较繁琐。因为我们要用额外的代码把多个线程同时访问的数据包围起来,并获取和释放一个线程同步锁,如果我们在一个代码块忘记获取锁,就有可能造成数据损坏。2. 使用线程同步会影响性能,获取和释放一个锁肯定是需要时间的吧,因为我们在决定 阅读全文
posted @ 2012-07-21 17:13 Learning hard 阅读(14023) 评论(16) 推荐(17) 编辑
摘要:上一篇文章主要介绍了如何利用线程池中的工作者线程来实现多线程,使多个线程可以并发地工作,从而高效率地使用系统资源。在这篇文章中将介绍如何用线程池中的I/O线程来执行I/O操作,希望对大家有所帮助。目录:一、I/O线程实现对文件的异步二、I/O线程实现对请求的异步三、总结一、I/O线程实现对文件的异步1.1 I/O线程介绍:对于线程所执行的任务来说,可以把线程分为两种类型:工作者线程和I/O线程。工作者线程用来完成一些计算的任务,在任务执行的过程中,需要CPU不间断地处理,所以,在工作者线程的执行过程中,CPU和线程的资源是充分利用的。I/O线程主要用来完成输入和输出的工作的,在这种情况下, 计 阅读全文
posted @ 2012-07-20 19:21 Learning hard 阅读(7075) 评论(20) 推荐(12) 编辑
摘要:目录:一、上节补充二、CLR线程池基础三、通过线程池的工作者线程实现异步四、使用委托实现异步五、任务一、上节补充对于Thread类还有几个常用方法需要说明的。1.1 Suspend和Resume方法这两个方法在.net Framework 1.0的时候就支持的方法,他们分别可以挂起线程和恢复挂起的线程。但在.net Framework 2.0以后的版本中这两个方法都过时了,MSDN的解释是这样:警告:不要使用Suspend 和 Resume 方法来同步线程的活动。您无法知道挂起线程时它正在执行什么代码。如果您在安全权限评估期间挂起持有锁的线程,则 AppDomain中的其他线程可能被阻止。如果 阅读全文
posted @ 2012-07-18 18:07 Learning hard 阅读(9433) 评论(20) 推荐(16) 编辑
摘要:引言:最近一段时间都在研究关于.Net线程的内容,觉得线程是每个程序员都应该掌握的,所以写下这个线程的系列希望能给大家学习过程中一些帮助,同时也是自己对线程的巩固,当中如果有什么错漏还请大家指出,这样我们可以互相得到进步。目录:一、线程的介绍二、线程调度和优先级三、前台线程和后台线程四、简单线程的使用一、线程的介绍在介绍线程之前, 很有必要知道什么是进程,以及与线程的关系。进程(Process)是应用程序的实例要使用的资源的一个集合(从可以简化理解:进程就是一种资源,是应用程序所用的资源)。每个应用程序都在各自的进程中运行来确保应用程序不受其他应用程序的影响,如果一个应用程序失败了, 只会影响 阅读全文
posted @ 2012-07-18 13:59 Learning hard 阅读(11916) 评论(37) 推荐(38) 编辑