• OpenThreads库学习


    在看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(3000);  
        thread1.cancel();     //取消线程1运行
      
        //等待Thread1处理完善后工作,然后再让主线程往下运行
        while(Thread1.isRunning())
            OpenThreads::Thread::YieldCurrentThread();
      
         /*main thread task*/
        pass;
        return 0;    
    }
    View Code

    三 线程任务让出控制的方法:延时、主动让出  

      • 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 其他线程通过调用这个函数来唤醒所有被阻塞的线程
  • 相关阅读:
    双端口SRAM中读干扰问题
    工业计算内存模块专用MRAM存储器-MR4A16B
    Java学习日报7.26
    Java学习日报7.25
    Java学习日报7.24
    Java学习日报7.23
    Java学习日报7.22
    Java学习日报7.21
    Java学习日报7.20
    Java学习日报7.19
  • 原文地址:https://www.cnblogs.com/jieruishu/p/11274967.html
Copyright © 2020-2023  润新知