互斥锁的使用

    #include <pthread.h>    
    #include <stdio.h>    
        
    pthread_mutex_t mutex ;    
    void *print_msg(void *arg){    
            int i=0;    
            pthread_mutex_lock(&mutex);  //mutex加锁  
            for(i=0;i<20;i++)  
        {    
                    printf("output : %d\n",i);    
                    usleep(200);    
            }    
           pthread_mutex_unlock(&mutex);  //mutex解锁  
    }    
    int main(int argc,char** argv)  
    {    
            pthread_t id1;    
            pthread_t id2;    
            pthread_mutex_init(&mutex,NULL);    
            pthread_create(&id1,NULL,print_msg,NULL);    
            pthread_create(&id2,NULL,print_msg,NULL);    
            pthread_join(id1,NULL);  //守护thread1结束  
            pthread_join(id2,NULL);  //守护thread2结束  
            pthread_mutex_destroy(&mutex);    
            return 0;    

    }  

输出:

output : 0
output : 1
output : 2
output : 3
output : 4
output : 5
output : 6
output : 7
output : 8
output : 9
output : 10
output : 11
output : 12
output : 13
output : 14
output : 15
output : 16
output : 17
output : 18
output : 19
output : 0
output : 1
output : 2
output : 3
output : 4
output : 5
output : 6
output : 7
output : 8
output : 9
output : 10
output : 11
output : 12
output : 13
output : 14
output : 15
output : 16
output : 17
output : 18
output : 19


在FreeRTOS中,互斥锁用于保护共享资源,防止多个线程同时访问共享资源而引发的竞争条件。互斥锁使用步骤如下: 1. 定义互斥锁变量和互斥锁句柄:在代码中先定义一个互斥锁变量和一个互斥锁句柄,例如: ``` osMutexId resource_mutex = NULL; // 定义互斥锁句柄 osMutexDef(resource_mutex); // 定义互斥锁变量 ``` 2. 创建互斥锁:在初始化函数中创建互斥锁,例如: ``` void resource_mutex_init(void) { resource_mutex = osMutexCreate(osMutex(resource_mutex)); } ``` 3. 获取互斥锁:在需要使用共享资源的函数中,首先获取互斥锁,例如: ``` void function(void) { resource_mutex_acquire(); // 获取互斥锁 // 操作共享资源 resource_mutex_release(); // 释放互斥锁 } ``` 总结:在FreeRTOS中,使用互斥锁的步骤包括定义互斥锁变量和句柄、创建互斥锁、获取互斥锁以及释放互斥锁。通过这些步骤,可以确保多个线程对共享资源的安全访问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [freertos互斥锁使用](https://blog.csdn.net/weixin_45379397/article/details/130604913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [【FreeRTOS】互斥锁使用](https://blog.csdn.net/qq_43581670/article/details/127688331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值