LwIP Application Developers Manual9---LwIP and multithreading

1.前言

lwIP的内核并不是线程安全的。如果我们必须在多线程环境里使用lwIP,那么我们必须使用“upper”API层的函数(netconn或sockets)。当使用raw API时,你需要自己保护你的内核。

2.并发处理

 (1)Sockets通常来说并不能在多个应用线程中使用(在udp/raw netconn,sendto/recv可以实现)。

 (2)一些上层操作的并发调用必须被应用层直接处理,如:socket,bind,connect,setsockopt和close。

有些情况必须要lwIP来处理(比如,要知道一个’int socket’的调用在close/socket之间是否都相同是困难的):如下所示

Task1int s1=socket() (tell s1=5)Task1,Task2use s1 with send,recv (ok, it could be possible).Task2closesocket(s1)Task3int s2=socket() (and... it could be s2=5)Task1send(s1) !!!! Problem, s1 would not the same proto/port than the first we open, !!!! but only application can know that !!!!

(3)一些操作(recv,recvfrom,send,sendto…)可以变为线程安全。为了使能全双工协议,我们必须将netconn/sockets的一些处理放到api_msg

(4)一些其它需要了解的信息

  • 一些特别的函数(netif_xxx和dhcp_xxx)在多线程中可能导致问题。这些函数在tcpip_thread使用相同的变量

(5)一些举例

  • 如果一个应用线程删除了一个netif,但tcpip_thread还在运行,这个会导致一个崩溃。在同一个时间内加入2个netif将会导致接口的丢失,详情请查看https://savannah.nongnu.org/bugs/?19347
  • 如果有一个应用线程停止了一个接口的dhcp,由于netif’s dhcp字段被dhcp’s定时器使用(在tcpip_thread线程运行),你将导致一个崩溃,详情请查看https://savannah.nongnu.org/patch/?5798

为了避免先前2个问题,你可以使用”netif api”,该api非常接近于‘netif’和‘dhcp’API

 

 

转载于:https://www.cnblogs.com/smartjourneys/p/8214321.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyqt5 点击开始执行_《快速掌握PyQt5》第一章 PyQt5的起点

1.1 开始安装PyQt5就跟安装其他库的方法一样,非常简单:Windows上安装:pip install pyqt5Linux上安装:sudo apt-get install pyqt5-dev-toolsMacOS上安装:pip3 install pyqt5验证是否安装成功,只需要导入下该…

不用math type解决word公式上浮问题

今天来解决一下文档整理时候令人头痛的公式上浮问题。 问题 就是这种,以前碰见了简直就是无解,今天不管怎样,解决它!! 准备 开始前要检查一下公式是否是office math格式,如果不是,需要先转化成…

前沿研究丨基于驾驶脑的智能驾驶车辆硬件平台架构

本文选自中国工程院院刊《Engineering》2018年第4期作者:李德毅,高洪波来源:A Hardware Platform Framework for an Intelligent Vehicle Based on a Driving Brain[J].Engineering,2018,4(4):464-470.编者按智能驾驶车辆试验平台是人工智能科…

cogs2840. 二叉查找树

二叉查找树 时间限制:1 s 内存限制:512 MB 【题目描述】 二叉查找树是一种特殊的二叉树(每个节点最多只有两个儿子的树)。树的每个节点上存有一个唯一的值,并且满足:这个节点的左子树内所有点的值都比这个…

苹果挂端口方法_调音台变身直播声卡的方法

现在干直播的多了,搞音响的也可以利用自己手头的专业设备,把调音台变身为直播声卡,然后进行多通道的高品质混音直播。需要的条件:数字调音台或带有USB音频功能的模拟调音台苹果手机(本人没有安卓手机,就以苹果手机为例…

word删除所有的回车、空格

一、打开替换窗口 二、①删除回车 在查找内容中输入 ^p 在替换为中输入 ^s 或者空白 全部替换 ②删除空格 在查找内容中输入 ^w 在替换为中输入 空白 全部替换 三、总结 在Word中 ^p表示回车, ^s表示空白, ^w表示空格

xp的viostor驱动无法获取磁盘序列号的分析

深信服的viostor驱动在获取序列号的时候,多了一个IDE处理的代码,位置在1128处。它会在刚开机加载viostor.sys时机被调用,然后去读取注册表HKLM\\SYSTEM\CurrentControlSet\Services\viostor\Parameters的IDESNCompat,若为1则有此功…

十问亿级神经元类脑计算机:AI领域有望突破,哪些还需火候

来源:澎湃新闻近日,浙江大学联合之江实验室共同研制成功了中国首台基于自主知识产权类脑芯片的类脑计算机(Darwin Mouse)。研究团队在9月1日的成果发布会上指出,该类脑计算机在神经元规模上超越了德国海德堡大学的Brai…

网络加载空页面

空页面的显示很常用,所以自己做了一个通用的空页面显示,先看效果图 在有网络的时候正常加载显示,在没有网络的时候自动加载空页面,点击空页面重新加载网络请求的一个功能 1:定义一个xml页面,页面布局是一个…

excel有的单元文字可以超出单元格_excel单元格斜线

excel表格的强大功能,给办公带来了很多便捷,但是有很多强大的功能,其实我们都还不会用,如在做报表时,要用到给单元格加两条斜线,三条斜线时,有时就不知道怎么弄,两条或许会&#xff…

百度地图发布专网地图时空数据托管平台,构建智慧城市数字底盘

来源:百度地图“新基建”浪潮下,智慧城市的建设和发展进一步提速,作为智慧城市数字基础设施的地理信息系统,其数据体量也极大增长,对海量GIS数据集成、存储、管理、计算、表达、分析和应用等有关技术的创新发展提出了急…

word取消空格显示为点

其实就是编辑标记的隐藏与显示问题 看这里 这就是“显示/隐藏编辑标记”按钮,加深颜色时就会和我的文章一样有点点,再点击一下就好啦。

泛型中? super T和? extends T的区别

经常发现有List<? super T>、Set<? extends T>的声明&#xff0c;是什么意思呢&#xff1f;<? super T>表示包括T在内的任何T的父类&#xff0c;<? extends T>表示包括T在内的任何T的子类&#xff0c;下面我们详细分析一下两种通配符具体的区别。 …

cad细等线体不显示_CAD图纸乱码、钢筋符号不显示解决办法(内含万能字体)

好课推荐&#xff1a;零基础CAD&#xff1a;点我CAD室内&#xff1a;点我 周站长CAD&#xff1a;点我CAD机械&#xff1a;点我 Bim教程&#xff1a;点我CAD建筑&#xff1a;点我CAD三维&#xff1a;点我全屋定制&#xff1a;点我 ps教程&#xff1a;点我苹果版CAD:点我 3dmax教…

长达1500年之久的争论:意识是连续的还是离散的?心理物理学家给出了新的回答...

来源&#xff1a;brainnews两种主要理论推动了由Saint Augustine发起的长达1500年之久的争论&#xff1a;意识是连续的&#xff08;即我们在每一个时间点都有意识&#xff09;&#xff0c;还是离散的&#xff08;即我们只在特定的时刻有意识&#xff09;&#xff1f; 9月3日发表…

关于python2到python3更新的一些书写规则的更改

1.‘import规则’更改 如‘tkinter’的import 1)python2: import Tkinter python3: import tkinter 2)python2: import tkFileDialog python3: import tkinter.filedialog 总结&#xff1a;关于模块名称的书写不同&#xff0c;也会导致‘模块丢失’的报错 2.print规则’更改 py…

bootstrap-table文档

http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/转载于:https://www.cnblogs.com/keepLeung/p/8257415.html

kind富文本编辑器_在VueJs中集成UEditor 富文本编辑器

来源 | http://www.mshady.com/archives/378在vue的项目中遇到了需要使用富文本编辑器的需求&#xff0c;在github上看了很多vue封装的editor插件&#xff0c;很多对图片上传和视频上传的支持并不是很好&#xff0c;最终还是决定使用UEditor。这类的文章网上有很多&#xff0c;…

彭博社 : 中国稀土——美欧的苦恼

文章来源&#xff1a;彭博社作者&#xff1a;Joe Deaux图片、视频来源&#xff1a;网络编辑&#xff1a;江上波对于那些用于电动汽车、风力涡轮机等领域的稀有原材料&#xff0c;美国和欧洲提高产量、降低对中国依赖性的雄心壮志将面临很多障碍&#xff0c;包括更高的成本和环境…

windows10下用cmd操作

引号中的内容均为直接在cmd中的输入内容&#xff0c;然后直接回车即可执行。 一、文件夹操作 1、进入某盘&#xff08;如C盘&#xff09; ‘C:’ 2、查看当前路径下所有文件和文件夹 ‘dir’ 3、打开文件夹&#xff08;如文件夹名为Data&#xff09; ‘cd Data’ 4、新建文件夹…