07 2009 档案
摘要:题意是由main thread产生一个server thread 和多个 client threads./smp3 client1.txt client2.txt client3.txt则产生3个client threads, 每个对应一个文件,client thread会一次读文件中的一行,然后将该行信息和它的线程编号作为queue element加入到queue中。注意所有client 线程并...
阅读全文
摘要:写了两个小程序验证1/*2*读者写者问题,读者优先3*<<操作系统-内核与设计原理>>p183,p1844*有读者在读那么后来的读者就可以继续读,而已经在等待的写者继续等待,5*直到某个时刻没有任何读者。6*读者之间不互斥,写者之间互斥,只能一个写,可以多个读,7*读者写者之间互斥,有写者写则不能有读者读8*所以只需要当前第一个读者和写者竞争,竞争成功则后面的读者因为9*已...
阅读全文
摘要:Unix/Linux编程实践一书 p440 14.5.2,介绍了使用条件变量进行线程同步。程序是开两个线程分别统计两个文件的字数,都统计完后,主线程得出总文字数。现在想要一个线程统计完成之后立即能够通知主线程,从而主线程能够立即打印出已经完成的文件信息。就像各州选举,可以及时通告已经结束的州的选情一个道理。书中程序的思想是由muterx保护一个mailbox,子线程获得mailbox写权力后将统计...
阅读全文
摘要:题目要求:例如给出下面的输入1../smp2.1 a1.txt a2.txt a3.txt a4.txt a5.txt a6.txt a7.txt每个文件如a0.txt有着很多int型数据,未排序,对每个文件启动一个线程对其排序排序好的文件存储为a1.txt.sorted … a7.txt.sorted2.然后再进行merge操作对于相邻的两个文件merge每次merge启动一个新的线...
阅读全文
摘要:避免冗余 冗余的定义,用不同的方式表达了同样的事务。 冗余带来空间的浪费和容易引起数据不一致性。 右图manufacter of beer 被表示了两次,一次作为beers的属性,一次作为实体,manfs. 这个设计的问题是如果某个manufacter当前没有beers,则它的地址丢失了。 表示为实体集需要至少满足以下两个条件之一。 1.至少有一个非key的属性。即它不仅仅是某个名字而已。 ...
阅读全文
摘要:完成了一个简单的shell,完成了assignment提到的所有功能,执行非built in 指令,执行built in 指令 1.cd 2. exit 3 !# 类似history !#N 显示最近N条指令。 !3执行历史记录3的命令。核心就是fork exec wait 不过纯用c感觉比较烦,资源需要小心管理,难于控制复杂程度,代码也仅仅是完成要求的基本功能,如果加入更多功能代码就更加容易出错...
阅读全文
摘要:/** 要运送车辆到对岸.车辆已经排好队,注意因为桥窄不能超车,* 分组的时候不能随意分组,前一组的车辆都排在后一组车辆的前* 面,即车辆的顺序是按输入固定的。* 只有一座单行的桥** 每辆车有其重量及最最快车速** 通过分组方式将车辆分成几组运输,* 每次只能运一组运到对岸后第二组才能出发,** 每组中车辆的总重量不能超过桥的载重量,** 运输速度则取决于该组车辆中最慢的那辆**问如何分组,运输...
阅读全文
摘要:/** 通过渡船运输车辆过河* m辆车辆按照一定时间次序到原岸边* 只有一个渡船,可以运输n量车,运输到对岸需要时间t* 回到原岸需要时间t* 问最少需要多少时间可以将车辆全部运到对岸* 在时间最短的情况下,最少需要运输几次**Sample Input//2个test case,渡船一次可载2辆车,单程运输需要10分钟,//有10辆车需要运输,分别在0,10,20..时刻到原岸//test cas...
阅读全文
摘要:C++ view第一期中给出了如何实现一个不能被继承的类的方法。如下:#ifdef NDEBUG#define FINAL_CLASS#else#define FINAL_CLASS : public virtual Private::NonDerivableHelper //这里的关键是virtual 只要是virtual就不能继承#endifnamespace Private{class No...
阅读全文
摘要:/** 给定一个长度不大于80的数字序列如 01000102* 3456* 添加适当的逗号,使得分割的数字严格升序* 要求给出使得最后数字最小的分割方法允许001,002,即0开头* 如果两个不同分割使得最后的数字大小相同,取第一个数字较大的序列,如果* 再相同取第二个数字较大的,如此...* 3546* 35,46 而不是 3,5,46 3,5,46 的分割index 对应 -1 0 1 4* ...
阅读全文
摘要:CGAL是一个优秀的几何处理库,对于三维网格采用半边格式存储。 其实对于网格而言,无外乎定义它的边,顶点,面,数据存储。 问题是用户可能会有不同的需求,比如做模型简化,需要对每个顶点加一个cost域,而对其它应用则不需要,也许你会说可以给基本的定点数据结构加一个指针,用户自己定义其它的数据都由该指针指向,但这种设计并不好。显然模板化处理是更好的方法,不要把顶点类型定死。 这样一来我们可以通过...
阅读全文