`

pthread_mutex_destroy 信号量将阻塞!

c 
阅读更多
#include<stdio.h>
  2 #include<stdlib.h>
  3 #include <pthread.h>
  4 pthread_mutex_t command_mutex_ = PTHREAD_MUTEX_INITIALIZER;
  5 pthread_cond_t command_cond_ = PTHREAD_COND_INITIALIZER;
  6 int main(){
  7
  8    pthread_mutex_destroy(&command_mutex_);
  9  printf("--------0000\n");
10    pthread_cond_destroy(&command_cond_);
11  printf("--------1111\n");
12    pthread_mutex_lock(&command_mutex_);
13  printf("--------222\n");
14 // stop        pthread_cond_signal(&command_cond_);在此阻塞
15 // stop        pthread_cond_wait(&command_mutex_,&command_cond_);在此阻塞
16  printf("--------333\n");
17           pthread_mutex_unlock(&command_mutex_);
18
19  printf("--------4444\n");
20  printf("over\n");
21
22 }
分享到:
评论

相关推荐

    pthread_mutex

    本文将深入探讨`pthread_mutex`在Linux环境下的使用,以及它在多线程同步中的作用。 首先,让我们理解什么是互斥。在多线程环境中,互斥是指同一时间只有一个线程能访问特定的资源或代码段,以防止数据竞争和其他...

    Linux互斥锁、条件变量和信号量[归类].pdf

    1. 快速型(PTHREAD_MUTEX_FAST_NP):这是默认的互斥锁类型,当一个线程已经锁定了互斥量时,再次调用锁定操作将会阻塞。 2. 递归型(PTHREAD_MUTEX_RECURSIVE_NP):如果一个线程已经锁定了互斥量,再次调用锁定...

    windows 下的pthread 库

    在Windows下使用`pthread`库,开发者需要注意一些移植问题,比如信号量和读写锁在Windows API中实现方式不同,可能需要额外的适配工作。此外,`pthread`库在Windows上可能没有像在Linux那样的优化,性能上可能有所...

    UNIX Linux实验教程 5实验五Linux多线程程序设计.doc

    pthread_mutex_init函数用于互斥量初始化,pthread_mutex_lock函数用于加锁操作,pthread_mutex_unlock函数用于开锁操作,pthread_mutex_destroy函数用于互斥量撤销操作。 实验内容包括分析、调试和执行一个多线程...

    linux的多线程编程的高效开发经验

    4. **信号量销毁**:使用`sem_destroy()`销毁信号量。 ```c int sem_destroy(sem_t *sem); ``` 通过以上介绍,我们可以看出,在Linux下进行多线程编程时,理解并熟练掌握线程、互斥锁和条件变量这三个核心概念...

    第2章-实验4-Pthread线程-yz1

    `sem_init`用于初始化信号量,`sem_wait`会使信号量减一并可能阻塞线程,`sem_post`则使信号量加一,释放资源。`sem_destroy`用于销毁不再使用的信号量。信号量值表示可用资源的数量,通过P(`sem_wait`)和V(`sem_...

    linux和win32下通用的互斥锁Mutex封装

    互斥锁是一种二状态信号量,状态为锁定或未锁定。当一个线程获得锁后,其他试图获取该锁的线程将被阻塞,直到锁被释放。这样就保证了对共享资源的独占访问,避免了数据竞争问题。在Linux中,互斥锁通常通过pthread_...

    Linux系统编程之线程同步

    int pthread_mutex_destroy(pthread_mutex_t *mutex); pthread_mutex_lock函数 加锁。可理解为将mutex--(或-1) int pthread_mutex_lock(pthread_mutex_t *mutex); pthread_mutex_unlock函数 解锁。可理解为将...

    Linux互斥锁、条件变量和信号量

    在多线程编程中,确保线程安全是至关重要的,特别是在Linux系统中,为了管理共享资源,Linux提供了互斥锁、条件变量和信号量这三种同步机制。它们都是用于协调多个线程对共享数据的访问,防止数据不一致性和竞态条件...

    线程示例代码

    线程间通信可以通过共享内存、信号量、条件变量等机制来实现。例如,使用`pthread_mutex_t`类型定义互斥锁,可以确保在任何时候只有一个线程访问特定资源,避免竞态条件: ```c pthread_mutex_t mutex; void* ...

    linux中的线程源代码

    - **信号量** (`sem_t`):计数信号量用于控制对资源的访问,二进制信号量类似互斥锁。 - **读写锁** (`pthread_rwlock_t`):支持多个读线程同时访问,但写线程独占。 3. **线程通信**:线程间通信通常通过共享...

    C语言并发控制:信号量与互斥锁的实现与应用

    如果信号量的值为0,则线程将阻塞; - `sem_post()`用于释放信号量,即增加信号量的值; - `sem_destroy()`用于销毁信号量。 ##### 3.3 互斥锁的实现 互斥锁的创建、初始化、锁定、解锁及销毁操作如下所示: ```c...

    互斥锁示例代码

    除了互斥锁,Linux还提供了信号量(Semaphore)、条件变量(Condition Variable)等同步机制,可以根据不同的应用场景选择合适的方法。 总之,互斥锁是保证多线程并发环境下数据安全的重要工具,通过理解其原理和...

    Linux线程同步:深入理解与实践.pdf

    pthread_mutex_destroy(&queue.mutex); pthread_cond_destroy(&queue.cond); return 0; } ``` **5.2 条件变量的特点与注意事项** - **与互斥锁配合使用**:通常情况下,条件变量需要与互斥锁一起使用,以确保...

    Linux 应用和驱动编程基础.

    - **`sem_post()`**: 增加信号量的值,并唤醒可能因等待该信号量而被阻塞的线程。函数原型为 `int sem_post(sem_t* sem);` - **`sem_destroy()`**: 销毁信号量对象。只有通过`sem_init()`创建的未命名信号量才能被...

    多线程服务器端的实现21

    当信号量值为0时,试图调用`sem_wait()`的线程会被阻塞,直到其他线程调用`sem_post()`使信号量值大于0。 一个简单的例子展示了如何使用互斥量和信号量控制线程的访问顺序。在这个示例中,有两个线程:`read`和`...

    (完整word版)LinuxPthread深入解析.doc

    `pthread_mutex_t`定义了一个互斥量对象,可以用`pthread_mutex_init()`初始化,`pthread_mutex_lock()`和`pthread_mutex_unlock()`分别用于锁定和解锁,`pthread_mutex_destroy()`则用于销毁互斥量。使用互斥量时,...

    linux下多线程程序设计

    - 函数原型:`int pthread_mutex_destroy(pthread_mutex_t *__mutex);` - 功能:销毁互斥锁。 - **锁定互斥量(阻塞)**:`pthread_mutex_lock` - 函数原型:`int pthread_mutex_lock(pthread_mutex_t *__mutex);...

    Linux的多线程编程的高效开发经验

    互斥锁提供了四种操作:创建(pthread_mutex_init)、销毁(pthread_mutex_destroy)、加锁(pthread_mutex_lock)和解锁(pthread_mutex_unlock)。创建互斥锁确保它可以被后续的加锁操作使用;销毁互斥锁释放相关...

    pthreads-r.rar

    pthread库提供了多种同步机制,如互斥量(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)和信号量(`pthread semaphore`)等。例如,使用互斥量保护共享资源: ```c++ pthread_mutex_t mutex; pthread_mutex...

Global site tag (gtag.js) - Google Analytics