Linux
文章平均质量分 92
leon_wdbt
这个作者很懒,什么都没留下…
展开
-
Linux利用线程信号量实现生产者和消费者问题
描述 生产者和消费者是对缓冲区是互斥访问关系,同时只有在生产者生产后使得缓冲区非空,消费者才可以消费,也是同步关系。 实现代码 #include<stdio.h> #include<sys/stat.h> #include<fcntl.h> #include<unistd.h> #include<pthread.h> #include&l...原创 2020-05-11 21:54:03 · 2026 阅读 · 0 评论 -
Linux多线程编程-利用读写锁实现读写互斥
描述 一次只有一个线程可以占有写模式的读写锁,但是可以有多个线程同时占有读模式的读写锁,正是因为这个特性,当读写锁是写加锁状态时,在这个锁被解锁之前, 所有试图对这个锁加锁的线程都会被阻塞。 相关知识 初始化操作: pthread_rwlock_init( pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict...原创 2020-05-11 21:53:16 · 349 阅读 · 0 评论 -
Linux多线程编程-线程互斥锁
描述 通过下面的练习加深对线程的概念的理解,同时明确线程的控制。从而进一步了解线程的互斥,并学会利用pthread库。 要求 定义一个用于互斥的互斥锁、和一个主函数和两个子线程都能访问的共享变量,一个主函数和两个用来创建子线程的子函数;在主函数中定义两个子线程ID的变量,初始化互斥锁,创建对应函数的子线程,等待两个子线程运行结束,获取并打印共享变量的结果,销毁互斥锁并返回退出。 实现代码 #inc...原创 2020-05-11 21:52:57 · 867 阅读 · 0 评论 -
Linux多线程编程-线程函数返回值(返回复杂数据类型)
引言 通过几个实验练习,学习线程之间连接的具体实现。下面列举了两个例子,一个是子线程返回简单数据类型;另一个是子线程返回复杂数据类型。 实现代码 子线程返回复杂数据类型 #include<stdio.h> #include<pthread.h> #include<unistd.h> #include<stdlib.h> struct member ...原创 2020-04-25 09:11:03 · 1552 阅读 · 0 评论 -
Linux多线程编程-线程函数返回值(返回简单数据类型)
引言 通过几个实验练习,学习线程之间连接的具体实现。下面列举了两个例子,一个是子线程返回简单数据类型;另一个是子线程返回复杂的数据类型。 实现代码 子进程返回简单的数据类型 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<pthread.h> // int a=20; ...原创 2020-04-25 09:10:43 · 1914 阅读 · 0 评论 -
Linux多线程编程-线程间参数传递
要求 实现在两个子线程通过全局变量传递数据:即在一个子线程中对全局变量的成员进行赋值,在另一个子线程中对全局变量的成员进行取值并显示。 体会同一进程的不同线程共享进程所拥有的全部资源的特性。 思路 首先,定义一个全局结构类型和对应的变量,定义两个Pthread_t类型变量来保存两个子线程的id。再定义一个主函数和两个用于创建子线程的对应函数。 在主函数中创建两个函数对应的子线程并对创建是否成功进...原创 2020-04-25 09:10:10 · 2331 阅读 · 0 评论 -
Linux多线程编程-线程创建
要求 编程实现在主进程中通过线程创建pthread_create()函数来创建新的线程。 在主线程和子线程中要通过getpid()及pthread _self()获取对应的进程号和线程号并打印输出 实现代码 #include<stdio.h> #include<unistd.h> #include<pthread.h> #include<stdlib.h&...原创 2020-04-25 09:09:16 · 1157 阅读 · 0 评论