随笔 - 276  文章 - 0  评论 - 44  阅读 - 141万

随笔分类 -  Linux多线程多进程,同步异步,进程间通信

Linux下通用线程池的创建与使用
摘要:线程池:简单地说,线程池 就是预先创建好一批线程,方便、快速地处理收到的业务。比起传统的到来一个任务,即时创建一个线程来处理,节省了线程的创建和回收的开销,响应更快,效率更高。在linux中,使用的是posix线程库,首先介绍几个常用的函数:1 线程的创建和取消函数pthread_create创建线... 阅读全文
posted @ 2014-04-25 15:42 bitbit 阅读(3091) 评论(0) 推荐(0) 编辑
Linux系统中的信号量(semphore)与互斥体(mutex)
摘要:http://www.embexperts.com/viewthread.php?tid=31两者最大区别:信号量可以允许多个线程进入临界区,而互斥体只允许一个线程进入临界区。本贴将描述信号量与互斥体之间的细微区别以及在实际的代码设计中如何使用它们。信号量在2.6.26中的定义如下:struct semaphore { spinlock_t lock; unsigned int count; struct list_head wait_list;};从以上信号量的定义中,可以看到信号量底层使用到了spin lock的锁定机制,这个spin lock... 阅读全文
posted @ 2014-04-10 16:44 bitbit 阅读(7800) 评论(1) 推荐(0) 编辑
Linux AIO
摘要:Linux aio是Linux下的异步读写模型。Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性。对于文件的读写,即使以O_NONBLOCK方式来打开一个文件,也会处于"阻塞"状态。因为文件时时刻刻处于可读状态。而从磁盘到内存所等待的时间是惊人的。为了充份发挥把数据从磁盘复制到内存的时间,引入了aio模型。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果。I/O 模型在深入介绍 AIO API 之前,让 阅读全文
posted @ 2014-04-10 11:09 bitbit 阅读(1899) 评论(0) 推荐(0) 编辑
浅析Linux Native AIO的实现
摘要:前段时间在自研的基于iSCSI的SAN上跑mysql,CPU的iowait很大,后面改用Native AIO,有了非常大的改观。这里简单总结一下Native AIO的实现。对于以IO为最大瓶颈的数据库,native AIO几乎不二的选择,仅仅依靠多线程,显然无法解决磁盘和网络的问题。1 API 与data structAIO的主要接口:System callDescriptionio_setup( )Initializes an asynchronous context for the current processio_submit( )Submits one or more asynchr 阅读全文
posted @ 2014-04-10 11:07 bitbit 阅读(4380) 评论(0) 推荐(0) 编辑
Linux异步IO操作
摘要:Linux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步 I/O(AIO)应用程序接口(API)就提供了这种功能。在本文中,我们将对这个 API 概要进行介绍,并来了解一下如何使用它。AIO 简介 Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 阅读全文
posted @ 2014-04-09 16:38 bitbit 阅读(6084) 评论(1) 推荐(0) 编辑
Linux 的多线程编程的高效开发经验
摘要:背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。我们假设读者都已经很熟悉 Linux 平台上基本的线程编程的 Pthread 库 API 。其他的第三方用以线程编程的库,如 boost,将不会在本文中提及。本文中主要涉及的题材包括线程开发中的线程管理,互斥变量, 阅读全文
posted @ 2014-04-09 16:33 bitbit 阅读(972) 评论(0) 推荐(0) 编辑
Linux内核开发之异步通知与异步I/O(一)
摘要:“小王,听说过锦上添花吧..”我拍拍下王的头说。“还锦上添花你,为你上次提的几个东东,我是头上长包..”小王气愤地瞪着我。“啊,为啥这样呢,本来还特意拒绝了MM的月份,抽出时间打算给你说点高级的东东,看来现在是不行了”我吃惊道,“这样吧,这次就给你讲些和前边有关的东西,也不失为锦上添花不是?”。“好,我也是这么打算的,就是没好意思说,今天讲些啥呢?”小王暗淡的眼光总算闪了闪。(为啥这么难受呢,好像跟什么会嚎叫的特像,哈哈) 那就言归正传,今天我们讲---Linux设备驱动程序之异步通知与异步I/O.” 小王,前边不是讲了阻塞与非阻塞访问,poll()函数等提供的较好的解决设备访问的机制,那么通 阅读全文
posted @ 2014-04-09 08:27 bitbit 阅读(2452) 评论(0) 推荐(0) 编辑
Linux下的进程间通信-详解
摘要:详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品:《Advanced Programming in the UNIX Environment》,它的中文译本《UNIX环境高级编程》已有机械工业出版社出版,原文精彩,译文同样地道,如果你的确对在Linux下编程有浓 厚的兴趣,那么赶紧将这本书摆到你的书桌上或计算机旁边来。说这么多实在是难抑心中的景仰之情,言归正传,在这一节里,我们将介绍进程间通信最最初步和最 最简单的一些知识和概念。 首先,进程间通... 阅读全文
posted @ 2014-04-08 13:04 bitbit 阅读(35531) 评论(1) 推荐(1) 编辑
Linux操作系统中多线程的同步
摘要:1 互斥锁 互斥锁用来保证一段时间内只有一个线程在执行一段代码。必要性显而易见:假设各个线程向同一个文件顺序写入数据,最后得到的结果一定是灾难性的。 先看下面一段代码。这是一个读/写程序,它们公用一个缓冲区,并且假定一个缓冲区只能保存一条信息。即缓冲区只有两个状态:有信息或没有信息。 void reader_function ( void ); void writer_function ( void ); char buffer; int buffer_has_item=0; pthread_mutex_t mutex; struct timespec delay; void... 阅读全文
posted @ 2014-04-08 10:18 bitbit 阅读(1448) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示