在看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. Java引擎

    import java.io.FileNotFoundException; import java.io.FileReader; import java.util.List; import javax ...

  2. selenium chromedriver退出报错

    记录使用python调用chromedriver时遇到的问题 代码: #!/usr/bin/env python #-*- coding:utf-8 -*- # author : fy # versi ...

  3. jmeter巧用自增长型变量

    实现目的 在进行性能测试时,某些请求中的参数值并不允许被重复使用,比如账号的创建.开通授权等服务,这时就需要在jmeter中构造一些自增长型的变量,供后续请求使用,以解决参数值重复的问题. 脚本实现 ...

  4. eclipse的版本代号

    mars为4.5版本号 代号 代号名 发布日期Eclipse 3.1 IO 木卫一,伊奥 2005Eclipse 3.2 Callisto 木卫四,卡里斯托 2006Eclipse 3.3 Europ ...

  5. 妙用python之编码转换

    转自i春秋 文章难易度:★★ 知识点:python.编码转换 前 言 在日常渗透,漏洞挖掘,甚至是CTF比赛中,会遇到各种编码,常常伴随着这些编码之间的各种转换.记得刚入门那个时候,自己处理编码转换问 ...

  6. Centos6.10-FastDFS-Storage.conf配置示例

    Centos610系列配置 # is this config file disabled # false for enabled # true for disabled disabled = fals ...

  7. java调用第三方接口(转载)

    在很多时候有些别人做过的东西直接拿来用就好了,例如:身份证的信息.某个地区的天气.电话归属地等等. 代码 //import com.alibaba.fastjson.JSONObject; impor ...

  8. Dart语言学习(三)Dart数值型

    一.类型 数值型有 num,int, double  num a = ; a = 12.5; print(a); print(a.runtimeType); ; // b = 20.5; print( ...

  9. hbase60010端口无法访问web页面

    原因:HBASE1.0之后的版本web端访问的接口变更为16010

  10. memcache安装 基于Red Hat 7.4

    Linux版本为 Red Hat 7.4 一.安装 1.下载:http://memcached.org/downloads 解压: tar -xzvf memcached-1.5.3.tar.gz 得 ...