当前位置:德化新闻中心 > 媒体聚焦 >

运城linux编程开发通知链表运行原理与结构类型
时间:2019-11-02  来源:  作者:admin666

随着互联网的不断发展,linux编程开发也成为了大多数程序员去学习的一种编程技术,而今天我们就一起来了解一下,linux编程开发中的通知链表数据结构与运行原理。

运城linux编程开发通知链表运行原理与结构类型

一、注意事项:

通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。

通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对应的函数就会被执行。所以对于通知链表来说有一个通知方与一个接收方。

在通知这个事件时所运行的函数由被通知方决定,实际上也即是被通知方注册了某个函数,在发生某个事件时这些函数就得到执行。其实和系统调用signal的思想差不多。

?????? 二、数据结构:

通知链有四种类型:

1.原子通知链(Atomicnotifierchains):通知链元素的回调函数(当事件发生时要执行的函数)只能在中断上下文中运行,不允许阻塞。

2.可阻塞通知链(Blockingnotifierchains):通知链元素的回调函数在进程上下文中运行,允许阻塞。

3.原始通知链(Rawnotifierchains):对通知链元素的回调函数没有任何限制,所有锁和保护机制都由调用者维护。

4.SRCU通知链(SRCUnotifierchains):可阻塞通知链的一种变体。

三、运作机制:

通知链的运作机制包括两个角色:

被通知者:对某一事件感兴趣一方。定义了当事件发生时,相应的处理函数,即回调函数。但需要事先将其注册到通知链中(被通知者注册的动作就是在通知链中增加一项)。

通知者:事件的通知者。当检测到某事件,或者本身产生事件时,通知所有对该事件感兴趣的一方事件发生。他定义了一个通知链,其中保存了每一个被通知者对事件的处理函数(回调函数)。通知这个过程实际上就是遍历通知链中的每一项,然后调用相应的事件处理函数。

四、运作过程:

通知者定义通知链。

被通知者向通知链中注册回调函数。

当事件发生时,通知者发出通知(执行通知链中所有元素的回调函数)。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。




上一篇:零基础学web前端编程需要掌握哪些JavaScript框架
下一篇:没有了

图片新闻
热闻排行
友情链接

Copyright (C) 2016 德化新闻中心 版权所有,未经授权禁止复制或镜像,本站保留所有权利
蜀icp备14010686号-1