摘要: 1 //生产者消费者问题 2 //使用事件和互斥量实现 3 //缓冲区只能放一个产品 4 5 //有人可能疑问,为什么不能用两个互斥量来实现同步, 6 //像使用两个事件一样。因为互斥量具有线程所有的概念, 7 //等待函数执行后,互斥量会保存当前线程id,表示这个互斥量属于这个线程。 8 //当你在另一个线程Release这个互斥量时,因为互斥量保存的线程ID与当前 9 //线程ID不一致,操作将返回FALSE。10 #include 11 #include 12 13 //互斥量14 HANDLE g_hMutex;15 //事件16 HANDLE g_hEventBufferEmpt.. 阅读全文
posted @ 2013-09-22 10:04 ibos 阅读(207) 评论(0) 推荐(0) 编辑
摘要: //生产者消费者问题//使用信号量和互斥量实现//信号量用于同步:缓冲区有产品,消费者才能取;缓冲区有空位置,生产者才能放入。//互斥量用于互斥:生产者和消费者不能同时访问缓冲区////缓冲区容量为4#include #include //互斥量HANDLE g_hMutex;//信号量HANDLE g_hSemA; //表示空缓冲区个数HANDLE g_hSemB; //非空缓冲区个数//缓冲区 4个int g_Buffer[4]; int g_i, g_j;DWORD WINAPI ProducterThreadFunc(PVOID pM){ int i; for(i = 1; i... 阅读全文
posted @ 2013-09-22 10:03 ibos 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 1 //生产者消费者问题 2 //使用事件和临界区实现 3 //缓冲区只能放一个产品 4 5 #include 6 #include 7 8 9 //临界区10 CRITICAL_SECTION g_cs;11 //事件12 HANDLE g_hEventBufferEmpty, g_hEventBufferFull; 13 //缓冲区,只能放一个产品14 int g_Buffer; 15 16 DWORD WINAPI ProducterThreadFunc(PVOID pM)17 {18 int i;19 for(i = 1; i <= 10; i++)... 阅读全文
posted @ 2013-09-22 10:01 ibos 阅读(250) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std; void ShellSort(int n[], int l) { int g= l/2;//增量,步长 int i, j; for ( ; g> 0; g/= 2) { for (i= g; i= g&&n[j- g]> t; j-= g) { n[j]= n[j- g]; } n[j]= t;... 阅读全文
posted @ 2013-02-12 17:23 ibos 阅读(128) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std; //选择排序,升序 //每次选择最小的数放到和无序区最前面的数交换 void SelectionSort(int n[], int l) { int i, j, min;//min记录最小数的索引号 for (i= 0; i>t; int i; for (i= 0; i>n[i]; } SelectionSort(n, t... 阅读全文
posted @ 2013-02-07 20:01 ibos 阅读(117) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std; //直接插入排序,升序 void InserSort(int n[], int length) { int i, j; for (i=1;i t&& j> 0)//依次移动元素,j个元素 { n[j]= n[j- 1];//如果元素大于t,则右移元素 j--; } n[j]= t;//插入t } } i... 阅读全文
posted @ 2013-02-07 00:49 ibos 阅读(184) 评论(0) 推荐(0) 编辑
摘要: //@冒泡排序算法 //@author: bos //@date: 2012.9.20 //算法思想:从最后的数字开始依次与前面的两两比较,并将 // 较大(较小)放在前面(交换位置),一趟排序 // 就将最大(最小)的数字排在了前面。依次进行 // n-1趟排序,且前面排好的不管 。 #include using namespace std; void Swap(int &x... 阅读全文
posted @ 2012-09-20 16:07 ibos 阅读(319) 评论(0) 推荐(0) 编辑
摘要: // HDOJ 1097 A hard puzzle // @author: bos // @date: 2012.2.17 //类似1061的题目 //好像用到了拉格朗日的不知道什么定理 //在《算法导论》里有,有机会借一本来看 #include #include int main() { _int64 a, b; while (scanf("%I64d%I64d", &a, &b)... 阅读全文
posted @ 2012-02-17 01:49 ibos 阅读(153) 评论(0) 推荐(0) 编辑
摘要: // HDOJ 2015 偶数求和 // @author: bos // @date: 2012.2.16 #include <stdio.h> int main() { int n, m; while(scanf("%d%d", &n, &m)!= EOF) { int i; int j= 0; 阅读全文
posted @ 2012-02-16 01:34 ibos 阅读(319) 评论(0) 推荐(0) 编辑
摘要: // HDOJ 2007 平方和与立方和 // @author: bos // @date: 2012.2.16 #include int main() { long m, n; while(scanf("%ld%ld", &m, &n)!= EOF) { int t; if(m> n) {t= m; m= n; n= t;} long x= 0; long y= 0;... 阅读全文
posted @ 2012-02-16 00:52 ibos 阅读(163) 评论(0) 推荐(0) 编辑