linux 互斥锁销毁_c-销毁锁定的互斥锁时pthread_mutex_destroy的正...
我写了以下最小示例:
#include
#include
#include
#define SUCCESS 0
using namespace std;
int main() {
int res;
pthread_mutex_t t;
pthread_mutex_init(&t, NULL);
res = pthread_mutex_lock(&t);
res = pthread_mutex_destroy(&t);
if (res != SUCCESS)
{
cout << "Failed to delete: " << strerror(res) << " # " << t.__data.__lock << " " << t.__data.__nusers << endl;
}
else
{
cout << "Deleted!"<< endl;
}
res = pthread_mutex_unlock(&t);
cout << res << endl;
pthread_exit(NULL);
return 0;
}
Attempting to destroy a locked mutex or a mutex that is referenced (for example, while being used in a pthread_cond_timedwait() or pthread_cond_wait()) by another thread results in undefined behavior.
因此,可以假设,如果它是同一线程,那就可以了.
奇怪的是,这句话在较旧的版本中已更改,因此不存在,并且该行仅表示
It shall be safe to destroy an initialized mutex that is unlocked. Attempting to destroy a locked mutex results in undefined behavior.
因此,认为此更改是出于某种原因并不是一件容易的事,我只是想确定一下.
我在两个不同的linux系统(ubuntu 13.10和另一个debian 5774)上测试了前面提到的代码,它失败并显示“无法删除:设备或资源繁忙#1 1”,在ideone的平台上它成功了.
ideones的行为仅仅是未定义行为的一个特例吗?还是其他情况有问题?
不幸的是,我找不到专门解决此问题的资源.
linux 互斥锁销毁_c-销毁锁定的互斥锁时pthread_mutex_destroy的正...相关推荐
- java 并发锁_Java并发教程–锁定:内在锁
java 并发锁 在之前的文章中,我们回顾了在不同线程之间共享数据的一些主要风险(例如原子性和可见性 )以及如何设计类以安全地共享( 线程安全的设计 ). 但是,在许多情况下,我们将需要共享可变数据, ...
- c++ linux 线程等待与唤醒_C++ Linux线程同步机制:POSIX信号量,互斥锁,条件变量...
线程同步机制:POSIX 信号量,互斥量,条件变量 POSIX 信号量 常用的POSIX 信号量函数为如下5个: sem_init sem_destroy sem_wait sem_trywait s ...
- Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)
同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两 个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容 ...
- Linux内核中锁机制之完成量、互斥量
在上一篇博文中笔者分析了关于信号量.读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题. 八.完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等 ...
- Linux文件系统、虚拟内存、进程与线程、锁
文章目录 文件系统 su Linux 中默认没有 super 命令 /proc /etc /var /root /home /bin /dev /lib /sbin tmp 句柄 maxfd PWD ...
- c++ linux 线程等待与唤醒_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...
为什么要线程同步? 线程间有很多共享资源,都对一个共享数据读写操作,线程操作共享资源的先后顺序不确定,可能会造成数据的冲突 看一个例子 两个线程屏行对全局变量count++ (采用一个val值作为中间 ...
- 自旋锁与互斥锁的对比、手工实现自旋锁
自旋锁与互斥锁的对比.手工实现自旋锁 版权声明:本文为博主原创文章,转载请注明出处,谢谢. https://blog.csdn.net/FreeeLinux/article/details/53695 ...
- c++ 11 std::recursive_timed_mutex递归锁定的互斥,并实现有时限锁定
定义于头文件 <mutex> std::recursive_timed_mutex class recursive_timed_mutex; (C++11 起) recursive_tim ...
- 自旋锁和互斥锁实例_多线程编程之自旋锁
一.什么是自旋锁 一直以为自旋锁也是用于多线程互斥的一种锁,原来不是! 自旋锁是专为防止多处理器并发(实现保护共享资源)而引入的一种锁机制.自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用 ...
最新文章
- python查找字符串出现次数_Python 中找出字符串中出现频率最高的字母
- java.security.InvalidKeyException: Illegal key size异常解决
- DQL数据查询语言——连接查询
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
- CanvasRenderingContext2D(渲染上下文对象)
- c# 操作excle
- Java ObjectOutputStream flush()方法与示例
- ehcache memcache redis 三大缓存男高音
- Intent传递数据时,可以传递哪些类型数据
- vb把窗体嵌入桌面底层_桌面透明便签插件便签软件
- 《正则表达式必知必会》读书笔记【语法整理】
- 阿里云oss Referer设置
- 文件查找以及文件内容查找
- 如何阅读《如何阅读一本书》?
- 12个VSCode插件工具
- [Ansible系列②]Ansible使用说明
- 解耦java_工厂模式实现解耦
- 论文阅读 2017 —— Sensor Fusion for Fiducial Tags: Highly Robust Pose Estimation from Single Frame RGBD
- 车道线检测1-传统算法相关简介
- 自己搭建的k8s集群,怎么做负载均衡?
热门文章
- druid配置数据库连接使用密文密码
- Android中Handler的使用
- iptables的conntrack表满了导致访问网站很慢
- Cesium 创建Geometry
- Educational Codeforces Round 12 A. Buses Between Cities 水题
- Javascript获取当月的天数
- Android菜单详解(一)——理解android中的Menu
- js 后台调用前台的JS
- 配置MOSS的FBA步骤与问题(发现设置权限策略的里选人不好用,选不到Provider的人)...
- Linux(Contos7.5)环境搭建之Gitblit安装(三)