OpenThreads库学习
在看STM32资料中看到STM32WB系列“双核无线微控制器配备双核无线微控制器(MCU)配备Bluetooth® 5、OpenThread和ZigBee®3.0连接技术,同时兼备超低功耗性能“不知道这个OpenThread是啥东东:
OpenThread库:提供了一个Thread类,供用户创建自己的线程。其使用非常方便,用户只需要继承自OpenThreads::Thread类,#include <OpenThreads/Thread>。然后自己重写run接口即可。参考https://blog.csdn.net/snail_hunan/article/details/69791641
https://www.threadgroup.org/cn
https://openthread.io/
https://www.st.com/zh/applications/connectivity/802-15-4-openthread.html
一 创建线程类重写run/cancle函数:
class MyThread : public OpenThreads::Thread
{
public:
MyThread(){}
~MyThread(){} virtual void run()
{
pass;
}
virtual int cancel()
{
pass;
}
};
二在主线程中创建新线程对象,并指明新线程对象以什么方式建立和创建它的主线程关系:join和detach到创建它的线程,如果使用join的方式,那么创建它的线程必须等待直到这个线程完成,如果是detach的方式,那么创建线程的线程和被创建的线程二者之间没有任何关系,被创建的线程相当于完全独立出来了。在OpenThread中默认使用的就是detach的模式
int main()
{
MyThread thread1;
thread.start();
// thread.join(); /*注释打开是join方式,否则是detach方式*/ //主线程休眠一会,让hread1运行一会
OpenThreads::Thread ::microSleep();
thread1.cancel(); //取消线程1运行 //等待Thread1处理完善后工作,然后再让主线程往下运行
while(Thread1.isRunning())
OpenThreads::Thread::YieldCurrentThread(); /*main thread task*/
pass;
return ;
}
三 线程任务让出控制的方法:延时、主动让出
static int YieldCurrentThread(); 挂起当前执行的线程
static int microSleep(unsigned int microsec); 使得当前线程进入睡眠
四 资源介绍:
4.1ReadWriteMutex:多读单写保护锁,读优先级高,写操作需要等所有的读操作线程完成才可写入。
4.2条件变量(Condition Variable)详解 :以互斥量为基础,进行线程的阻塞、同步信号等
- wait(Mutex *mutex)
- wait(Mutex *mutex, unsigned long int ms)
- signal 其它线程通过该函数操作某个信号量/互斥量等,让等待该资源的获得该资源
- broadcast 其他线程通过调用这个函数来唤醒所有被阻塞的线程
OpenThreads库学习的更多相关文章
- python 操作exls学习之路1-openpyxl库学习
这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...
- dlib库学习之一
dlib库学习之一 1.介绍 跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chines ...
- python_库学习_01
一.python的库学习之 财经数据接口包 1.安装ThShare 直接pip install tushare 可能会出现缺少依赖库的情况,依次安装,大概有lxml,pandas,bs4,reques ...
- numpy, matplotlib库学习笔记
Numpy库学习笔记: 1.array() 创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...
- python爬虫解析库学习
一.xpath库使用: 1.基本规则: 2.将文件转为HTML对象: html = etree.parse('./test.html', etree.HTMLParser()) result = et ...
- 【mmall】Guava库学习Collections
参考链接 Guava库学习:学习Collections(三)Sets
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...
随机推荐
- CSS之浮动布局及相关问题
CSS之浮动布局及相关问题 1.什么是浮动: 在我们布局的时候用到的一种技术,能够方便我们进行布局,默认流动布局有不足,让块元素可以并排显示,通过让元素浮动,我们可以使元素在水平上左右 ...
- 【转载】Mapreduce实现自定义的InputFormat
转自:http://www.cnblogs.com/dlutxm/archive/2011/09/30/2196653.html 在mapreduce程序运行的开始阶段,hadoop需要将待处理的输入 ...
- rabbitmq快速安装(实测有效)(新版)
rabbitMq的快速安装和使用在第二部分,第一部分就看个热闹,第二部分直接可以完成环境的搭建 如果需要资料的话可以直接来 这里 进行下载 第一部分 http://www.cnerlang.com/r ...
- MyBatis(6)——分页的实现
分页的实现 a)通过mysql的分页查询语句: 说明:sql的分页语句格式为select * from aaa limit #{startIndex},#{pageSize} //---------- ...
- wamp使用时遇到的问题总结
1.相关网页无法访问? 解决方案:修改配置文件,将所有的Deny from all 改为Allow from all,再重启wamp 以下列举配置文件 local host无法访问 单击wamp图标, ...
- XSS 1
首先打开链接https://xss.haozi.me/ 点击打开第一题 然后看一下代码 尝试一下用简单的代码 可不可以通过 例如:<script>alert(1)</script& ...
- oracle 数据库创建表
好好好好久没更新了,最近真是堕落了,做的都是小菜鸟做的东西,都没得写,但是最近数据库突然从mysql换到oracle,哈哈哈哈哈,还真是挺复杂的 1.首先建表 fund 是表名称 其他的是字段名称 c ...
- Vue.js 学习入门:介绍及安装
Vue.js 是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层 ...
- python文件打开模式&time&python第三方库
r:以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. w:打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. a:打开一个文件用于追加.如果该文件已存在 ...
- gRPC Learning Notes
简介 更多内容参考:https://www.grpc.io/docs/guides/ gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计.目前提供 C.Java 和 G ...