行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年3月26日

摘要: 随机生成[s,e]之间互不相同的m个整数这样考虑:从n(e-s+1)个整数取m个数,那么每个数取到的概率是m/n。怎么应用这一点呢?可以这样:随机生成[1,n]之间的一个整数,如果这个数小于等于m就表示满足了m/n的概率,即概率m/n的事件发生了。数学上的证明大概是很繁琐吧,不懂~~~代码实现如下://随机生成[s, e]之间的m个互不相同的数,并放存入p[]中void GetRandomNum(int *p, int s, int e, int m){ assert(p); int k=0; srand(time(NULL)); for (int i=s; i<=e&... 阅读全文
posted @ 2013-03-26 22:06 windflying 阅读(480) 评论(0) 推荐(0) 编辑

摘要: 最早的一篇原文:http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对一个共享资源的单独访问而设计的。3、信号量:为控制一个具有有限数量用户资源而设计。4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。临界区(Critical Section)保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区 阅读全文
posted @ 2013-03-26 20:24 windflying 阅读(119) 评论(0) 推荐(0) 编辑

摘要: 摘自《Networking Programming for Microsoft Windows》第八章“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!从本质上说,完成端口模型要求我们创建一个Win32完成端口对象,通过指定数量的线程,对重叠I/O请求进行管理,以便为已经完成的重叠I/O请求提供服务。使用这种模型之前,首先要创建一个I/O完成端口对象,用它面向任意数量的套接字句柄,管理多个I/O请求。要做到这一点,需要调用CreateCompletionPort函数。该函数定义如下:HANDLE 阅读全文
posted @ 2013-03-26 15:28 windflying 阅读(826) 评论(0) 推荐(0) 编辑

摘要: 如果当前系统中支持高分辨率计数器,我们可以使用 QueryPerformanceCounter 和 QueryPerformanceFrequency 进行高分辨率的计时。QueryPerformanceFrequency()类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败函数QueryPerformanceCounter用于得到高精度计时器的值(如果存在这样的计时器)原型:BOOL QueryPe 阅读全文
posted @ 2013-03-26 14:33 windflying 阅读(5803) 评论(0) 推荐(0) 编辑

摘要: 接上一篇,我们来看另一种实现临界区顺序访问的方法这次我们使用,InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection,DeleteCriticalSection要使用这些需要包含windows.h并定义一个CRITICAL_SECTION变量那么这种方式与上一篇中用互斥量实现的方式有什么差别呢?下面是实现的代码:View Code #pragma once#include <windows.h>#include <assert.h>class CVCriSection{public: CVC 阅读全文
posted @ 2013-03-26 10:04 windflying 阅读(1303) 评论(0) 推荐(0) 编辑

摘要: 所谓临界区就是同一时刻只能有一个线程访问的代码段。处于临界区的代码通常都是需要被多个线程访问,但又只能顺序访问的。一般就是共享的数据。用于实现顺序访问临界区的方式有多种,互斥量、信号量、事件都可以实现。下面的方式是采用互斥量实现一个类,比直接使用互斥量方便、直观。#include <stdio.h>#include <string.h>#include <stdlib.h>#ifndef WIN32 #include <pthread.h>#else#include <windows.h>#endif#ifdef WIN32typed 阅读全文
posted @ 2013-03-26 08:21 windflying 阅读(577) 评论(0) 推荐(0) 编辑