系统编程
文章平均质量分 80
系统编程就是利用系统调用提供的这些接口、或者说函数、去操作磁盘、终端、网络等硬件。
玖玖玖_violet
某985在读研究生,学习ing
展开
-
线程池理解
当某线程被唤醒时,其可能是被异常或是伪唤醒,或者是一些广播类的唤醒线程操作而导致所有线程被唤醒,使得在被唤醒的若干线程中,只有个别线程能拿到任务。线程池当中的线程要从任务队列里拿任务,前提条件是任务队列中必须要有任务,因此线程池当中的线程在拿任务之前,需要先判断任务队列当中是否有任务,若此时任务队列为空,那么该线程应该进行等待,直到任务队列中有任务时再将其唤醒,因此我们需要引入条件变量。思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。原创 2023-12-19 16:49:02 · 981 阅读 · 0 评论 -
Linux信号
程序运行时,按下ctrl + c,结束进程。原创 2023-12-13 21:29:16 · 933 阅读 · 0 评论 -
浅谈可重入与线程安全
但是,如果在单线程背景下第一次执行该函数时已经获得互斥锁进入临界区,这时该函数被重入执行,这将在重新申请互斥锁时被饿死(starvation),因为获得了互斥锁的该函数的第一次执行将永远没有机会再获得CPU时间片。以上代码中,f使用了全局变量 g_var,所以,如果两个线程同时执行它并访问g_var,则返回的结果取决于执行的时间。多线程执行的函数或子程序,各个线程的执行时机是由操作系统调度,不可预期的,但是该函数的每个执行线程都会不时的获得CPU的时间片,不断向前推进执行进度。但是,他们有重大区别。原创 2023-12-06 19:19:15 · 944 阅读 · 0 评论 -
多线程详解2-信号量,进程互斥量,文件锁,fcntl和位图
信号量多用于进程间的同步与互斥同步:处理竞争就是同步,安排进程执行的先后顺序就是同步,每个进程都有一定的个先后执行顺序。互斥:互斥访问不可共享的临界资源,同时会引发两个新的控制问题(互斥可以说是特殊的同步)。竞争:当并发进程竞争使用同一个资源的时候,我们就称为竞争进程。临界区:临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。临界资源:只能被一个进程同时使用(不可以多个进程共享),要用到互斥。原创 2023-12-06 16:19:24 · 544 阅读 · 0 评论 -
多线程详解1-互斥锁,读写锁,生产者消费者模型
while循环用于等待队列中有产品可供消费,同时避免虚假唤醒的问题。原创 2023-12-04 16:05:28 · 1076 阅读 · 0 评论 -
pthread_join()函数
再次强调,一个线程执行结束的返回值只能由一个 pthread_join() 函数获取,当有多个线程调用 pthread_join() 函数获取同一个线程的执行结果时,哪个线程最先执行 pthread_join() 函数,执行结果就由那个线程获得,其它线程的 pthread_join() 函数都将执行失败。在应用中,用pthread_join()函数控制线程的执行流,阻塞调用它的线程,直至目标线程执行结束(接收到目标线程的返回值),阻塞状态才会解除。》一节中做详细讲解。还有一个作用是:获取线程的返回值。原创 2023-11-30 09:57:57 · 3218 阅读 · 0 评论