- 博客(13)
- 资源 (3)
- 收藏
- 关注
原创 安装过程中出现PKG_CONFIG_PATH的问题解决方法
在安装开源软件的过程中, 经常会碰到提示配置PKG_CONFIG_PATH路径, 或者直接提示没有安装某某库, 但是我们已经安装了啊。其实造成这种情况的原因很简单, 就是安装的目录不能被依赖程序找到。具体的原理可以网上搜索 configure, pkg-config , PKG_CONFIG_PATH这三者直接的关系。此处不再赘述。解决方
2015-08-18 11:30:29 1030
转载 多线程经典面试题
1、基本概念 详见:线程和进程关系和区别、同步和互斥、进程间通信2、以下多线程对int型变量x的操作,哪几个不需要进行同步(D) A. x=y; B. x++; C. ++x; D. x=1; 详见:多线程二 多线程中的隐蔽问题揭秘3、多线程中栈与堆是公有的还是私有的 (C)
2015-08-14 11:50:03 360
转载 线程与进程的区别
1、线程的基本概念 概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 好处 :(1)易于调度。 (2)提高
2015-08-14 11:48:47 389
转载 多线程八 生产者消费者经典问题
继经典线程同步问题之后,我们来看看生产者消费者问题及读者写者问题。生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区
2015-08-14 11:47:51 585
转载 多线程七 经典线程同步与互斥总结
前面《多线程二 多线程中的隐蔽问题揭秘》提出了一个经典的多线程同步互斥问题,这个问题包括了主线程与子线程的同步,子线程间的互斥,是一道非常经典的多线程同步互斥问题范例,后面分别用了四篇《多线程三 经典线程同步之关键段CS》《多线程四 经典线程同步之互斥量Mutex》《多线程五 经典线程同步之事件Event》《多线程六 经典线程同步之信号量Semaphore》
2015-08-14 11:46:40 504
转载 多线程五 经典线程同步之事件Event
1、首先介绍下如何使用事件。 事件Event实际上是个内核对象,它的使用非常方便。下面列出一些常用的函数。1)第一个 CreateEvent函数功能:创建事件函数原型:HANDLE CreateEvent(LPSECURITY_ATTRIBUTESlpEventAttributes,BOOLbManualReset,BOOLbI
2015-08-14 11:44:47 423
转载 多线程四 经典线程同步之互斥量Mutex
1、互斥量是一个内核对象,它用来确保一个线程独占一个资源的访问。 互斥量与关键段的行为非常相似,并且互斥量可以用于不同进程中的线程互斥访问资源。使用互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。1)第一个 CreateMutex函数功能:创建互斥量(注意与事件Event的创建函数对比)函数原型:HANDLE CreateMutex
2015-08-14 11:43:59 398
转载 多线程三 经典线程同步之关键段CS
1、本文首先介绍下如何使用关键段,然后再深层次的分析下关键段的实现机制与原理。定义关键段变量:CRITICAL_SECTION g_csThreadParameter, g_csThreadCode;关键段CRITICAL_SECTION一共就四个函数,使用很是方便。下面是这四个函数的原型和使用说明。1)函数原型:void InitializeCriticalSection
2015-08-14 11:43:11 325
转载 多线程二 多线程中的隐蔽问题揭秘
上一篇《多线程一 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天多少个用户登录,如果这个值不等于我们启动的线程个数,那显然说明这个
2015-08-14 11:38:22 368
转载 多线程一 CreateThread与_beginthreadex的本质区别
1、尽量使用_beginthreadex()来代替使用CreateThread(),为什么? _beginthreadex()函数在创建新线程时会分配并初始化一个_tiddata块。这个_tiddata块自然是用来存放一些需要线程独享的数据。事实上新线程运行时会首先将_tiddata块与自己进一步关联起来。然后新线程调用标准C运行库函数如strtok()时就会先取得_tidda
2015-08-14 11:22:51 475
转载 多线程六 经典线程同步之信号量Semaphore
1、首先来看看如何使用信号量 信号量Semaphore常用有三个函数,使用很方便。下面是这几个函数的原型和使用说明。第一个 CreateSemaphore函数功能:创建信号量函数原型:HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG l
2015-08-14 10:32:27 462
转载 CreateEvent的用法
事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对象的函数如下: HANDLE CreateEvent( LPSECURITY_ATTRIBUTE
2015-08-14 09:46:54 498
转载 Windows API ——CreateMutex——创建互斥对象
互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权 互斥对象的结构:包含了一个使用数量,一个线程ID,一个计数器 使用数量是指有多少个线程在调用该对象,线程ID是指互斥对象维护的线程的ID 计数器表示当前线程调用该对象的次数 HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, 安全属
2015-08-14 09:41:43 418
绝对好使的Ser-u运行程序,而且加了汉化版和注册机!
2014-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人