题目分析
本题目是一道多线程编程的题。由于在进程中有很多资源是公共资源,也就是没有访问权限的设置。这样一来,如果有很多个线程同时去访问一个公共资源,那么就会造成资源竞争或者资源抢夺现象,这往往会导致程序的运行结果出现异常,甚至是崩溃。
针对上述情况,就要使用到线程同步,也就是当一个线程访问某个公共资源时,其他资源禁止访问。而实现线程同步的方法通常有四种:互斥锁、信号量、条件变量和读写锁。
而此次我使用的是读写锁,针对两个线程读取这一任务通过创建两个读线程来执行,而在文件中输入字符串,则是创建一个写线程,话不多说,此处直接贴上读写线程的代码:
写线程函数如下:
void *write_thread(void *temp2)
{
while(1)
{
sleep(1);
pthread_rwlock_wrlock(&myrwlock);
char str[100];
FILE *fp;
fp = fopen("test.txt","w");
if (NULL == fp)
{
printf("Error!");
exi