在看STM32资料中看到STM32WB系列“双核无线微控制器配备双核无线微控制器(MCU)配备Bluetooth® 5、OpenThreadZigBee®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库学习的更多相关文章

  1. python 操作exls学习之路1-openpyxl库学习

    这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...

  2. dlib库学习之一

    dlib库学习之一 1.介绍 跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chines ...

  3. python_库学习_01

    一.python的库学习之 财经数据接口包 1.安装ThShare 直接pip install tushare 可能会出现缺少依赖库的情况,依次安装,大概有lxml,pandas,bs4,reques ...

  4. numpy, matplotlib库学习笔记

    Numpy库学习笔记: 1.array()   创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...

  5. python爬虫解析库学习

    一.xpath库使用: 1.基本规则: 2.将文件转为HTML对象: html = etree.parse('./test.html', etree.HTMLParser()) result = et ...

  6. 【mmall】Guava库学习Collections

    参考链接 Guava库学习:学习Collections(三)Sets

  7. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  8. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  9. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

随机推荐

  1. 集合的操作 contains(),containsAll() ,addAll(),removeAll(),

    package seday11; import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;/** ...

  2. 【网易官方】极客战记(codecombat)攻略-地牢-Kithmaze 二度历险

    关卡连接: https://codecombat.163.com/play/level/the-second-kithmaze 很多人试过,但只有少数人能穿过此迷宫. 简介: 记住,你只需 一个 wh ...

  3. dw 快捷键

    <html></html> 创建一个HTML文档<head></head> 设置文档标题和其它在网页中不显示的信息<title></t ...

  4. Winform遍历窗口的所有控件(几种方式实现)

    本文链接:https://blog.csdn.net/u014453443/article/details/85088733 扣扣技术交流群:460189483 C#遍历窗体所有控件或某类型所有控件 ...

  5. 计算几何-Andrew法-凸包

    This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. 利用一下叉积和栈 ...

  6. Django框架-模板层

    Django框架-模板层 一.模板语法传值 1.验证是否python所有的数据类型都可以传递到前端 locals()的妙用:该方法虽然好用,但是在某些情况下会造成资源的浪费 结论:整型.浮点型.字符串 ...

  7. linux建立动态库的软链接

    复制动态库: /home/wmz/anaconda3/lib/ 删除原链接: 建立新链接: /home/wmz/anaconda3/lib/libstdc++.so. 问题的起源是,安装anacond ...

  8. go基础_切片

    切片创建方式 1.通过数组创建 2.通过内置函数make创建 切片允许的操作 1.追加元素 2.通过内置函数make创建 package main import "fmt" fun ...

  9. saas的资料

    互联网时代的软件革命-SaaS架构设计.叶伟.扫描版 提取码:jd5c 让云落地  云计算服务模式(SAAS.PAAS和IAAS)设计决策--Michael J.Kavis著提取码:ut24

  10. vscode设置python代码补全时函数自动加上小括号

    vscode设置python代码补全时函数自动加上小括号 vscode的python代码补全插件默认安装时是不会自动补全括号的,感觉不是和方便 以下介绍下自动补上小括号的方法 可能部分同学设置了还是没 ...