本项目使用C语言编程,旨在通过代码模拟经典的“读者-写者”问题,展示了多线程环境下的同步机制和互斥锁的应用。
在Windows 2000环境下创建一个控制台进程,并且该进程中包含n个线程。每个线程代表读者或写者中的一个角色。根据测试数据文件的要求,这些线程会进行相应的读取和写入操作。利用信号量机制来分别实现读者优先与写者优先的问题。
对于读者-写者的限制如下:
1. 写-写互斥:在同一时间只能有一个写作进程在执行。
2. 读-写互斥:不能同时存在一个线程进行阅读而另一个正在进行撰写的操作。
3. 读-读允许:可以有多个线程同时进行数据的查看操作。
对于读者优先,附加限制为当已有其他正在阅读的线程时,新的请求同样也可以直接开始执行。
而对于写者优先的情况下,则是如果已经存在等待访问共享资源的写作进程时,任何想要进入阅读模式的新线程必须等到所有希望撰写的数据修改任务完成之后才能启动其读取操作。
在程序运行过程中需要显示的信息包括:每个新创建的线程、发出的读或写的申请、开始执行相应的读写动作以及最后结束这些活动。通过这种方式可以保证所有的处理过程都严格遵循上述提到的各种限制条件。