自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 二叉排序树转换成排序的双向链表

题目描述:将二叉排序树转换成一个排序的双向链表,要求:不能创建任何新的节点,只能通过调整指针的指向来实现;解题思路:我们知道二叉排序树的递归定义是:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树;二叉排序树的一个很重要的特性就是:二叉树中序遍历的结果是一个递增的

2013-06-29 23:14:31 8904 1

原创 Linux进程同步之记录锁(fcntl)

记录锁相当于线程同步中读写锁的一种扩展类型,可以用来对有亲缘或无亲缘关系的进程进行文件读与写的同步,通过fcntl函数来执行上锁操作。尽管读写锁也可以通过在共享内存区来进行进程的同步,但是fcntl记录上锁往往更容易使用,且效率更高。记录锁的功能:当一个进程正在读或修改文件的某个部分是,它可以阻止其他进程修改同一文件区。对于这个功能阐述我认为有三点要解释的:记录锁不仅仅可以用来同步不同

2013-06-28 16:04:53 8757 4

原创 Linux线程同步之读写锁(rwlock)

读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程。当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步,和互斥量不同的是:互斥量会把试图进入已保护的临界区的线程都阻塞;然而读写锁会视当前进入临界区的线程和请求进入临界区的线程的属性来判断是否允许线程进入。相对互斥量只有加锁和不加锁两种状态,读写锁有三

2013-06-26 00:07:10 27614 8

原创 Linux线程同步之条件变量

条件变量变量也是出自POSIX线程标准,另一种线程同步机制,。主要用来等待某个条件的发生。可以用来同步同一进程中的各个线程。当然如果一个条件变量存放在多个进程共享的某个内存区中,那么还可以通过条件变量来进行进程间的同步。每个条件变量总是和一个互斥量相关联,条件本身是由互斥量保护的,线程在改变条件状态之间必须要锁住互斥量。条件变量相对于互斥量最大的优点在于允许线程以无竞争的方式等待条件的发生。当

2013-06-25 23:49:33 8147

原创 Linux线程同步之互斥量(mutex)

互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程。当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步。互斥量,从字面上就可以知道是相互排斥的意思,它是最基本的同步工具,用于保护临界区(共享资源),以保证在任何时刻只有一个线程能够访问共享的资源。互斥量类型声明为pthread_mutex_t数据类型,在中有具体的定义。

2013-06-25 23:31:07 22105 1

原创 Windows线程同步之Slim读写锁(SRWLock)

Slim读写锁简称SRWLock,它的目的和临界区相同,对一个资源进行保护,不让其他线程访问。但是不同的是SRWLock允许我们区分哪些线程是读取共享资源的值,哪些线程是修改共享资源的值。所有读线程在同一时刻可以访问共享资源,因为这些线程不会破坏共享资源,只有当写线程要访问共享资源时,才需要进行同步。写线程应当独占式访问资源,其他任何线程都不允许访问资源。这就是SRWLock提供的全部功能。所

2013-06-19 23:28:52 5747

原创 Windows线程同步之临界区对象(Critical Section)

我们也可以通过临界区保证在同一时间内只有一个线程对共享数据进行控制访问。临界区不是内核对象,只能对进程内部的线程进行同步。临界区对象是定义在数据段中的一个CRITICAL_SECTION结构,Windows内部使用这个结构记录的一些信息,来确保同一个时间只有一个线程访问该临界区保护的数据。临界区对象使用要调用的函数接口如下:(1)InitializeCriticalSection(

2013-06-19 22:57:20 4623 5

原创 Windows线程同步之互锁函数(Interlocked)

Windows下进程内部的各个线程之间的同步不需要借助内核对象,Windows提供的默认在用户模式下的线程同步工具。互锁函数为多线程同步访问共享变量提供了一个简单的机制。如果变量在共享内存,不同进程的线程也可以使用此机制。互锁函数对共享变量的操作是原子的,这个原子性体现在保证多线程在同一个时刻只能有一个线程获得对该同步变量的操作权限。(1)InterlockedExchangeAdd(

2013-06-19 22:27:10 2303

原创 Windows进程同步之信号量内核对象(Semaphore)

信号量内核对象主要包括三个部分:使用计数,最大资源计数,当前资源计数。使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数;最大资源计数:表示信号量控制的最大资源的数目;当前资源计数:表示信号量当前可用的资源数目;信号量使用规则如下:如果当前资源计数大于0,信号量处于触发状态; 如果当前资源计数等于0,那么信号量处于未触发状态;系统绝不会使当前资源计数变为负数

2013-06-19 01:28:37 9559 2

原创 Windows进程同步之事件内核对象(Event)

在所有的内核对象中,事件内核对象比其他的简单的多,可以用事件内核对象对不同进程进行同步。事件内核对象主要包括三个部分:使用计数,一个表示是自动还是手动重置事件的布尔值,一个表示是否有信号的布尔值。使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数。表示自动或手动重置事件的布尔值:当一个事件是自动重置事件,事件被触发后,只有一个等待的线程会变成可调度状态(根据系统的调度策

2013-06-14 12:52:18 6582 1

原创 Windows进程同步之互斥量内核对象(Mutex)

我们知道进程间的同步操作都是要借助内核来完成的,和同一个进程中的线程同步只需要在用户模式下是有很大差别的,当然,对于进程安全的,对于线程肯定也是安全的,但在用户模式下的线程同步所需消耗的代价相对于通过内核完成的同步是很小的。所以不要利用进程同步的方式来进行同一进程中线程的同步。这里先讨论进程同步的方式之一:互斥量(Mutex)。互斥量内核对象能够确保一个进程独占对一个资源的访问。互斥量与关

2013-06-12 21:58:08 8386 1

原创 统计一个文档中出现频率最多的k个单词的实现

这个问题我们应该经常会见到,想写这个问题是因为微软面试中,面试官问了这问题,而且要写代码,尼玛,最可恨的是不准用容器,哥当时就跪了。。。这个问题就是最常见的topK问题,解决思路:首先统计文档中所有不同word出现的频率,然后对所有不同的word按照出现频率排序,取出出现频率最大的k个words。1.统计文档中所有不同word出现的频率统计文档中word的频率的方法,要根据文档的数

2013-06-02 20:35:33 4039

计算机图形学VC实现源代码

计算机图形学VC实现源代码,里面有各种基本的图形实现算法,仅供学习。

2012-01-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除