设计多线程安全库
来源:互联网 发布:数据信息知识的关系 编辑:程序博客网 时间:2024/06/10 03:16
原文地址:http://www.cnblogs.com/cornsea/archive/2010/04/11/1709865.html
的结果。
通常,可以通过一下三种方法来保证线程安全:
设计多线程安全库
1. 为什么要多线程?
多线程可以提高系统的性能。更方便实现某些程序模型。
2. posix中的一些线程安全函数如下
asctime_r, ctime_r, getgrgid_r,getgrnam_r, getpwnam_r,
getpwuid_r, gmtime_r, localtime_r, rand_r, readdir_r, strtok_r
3. 线程安全和可重入例程的特点
线程安全例程是指这个例程即使被多个线程同时调用也不会产生错误
通常,可以通过一下三种方法来保证线程安全:
3.1 设计成可重入例程
只使用参数和堆栈的例程。
void test(int *buf) {
int in_buf[20];
buf[0] = in_buf[0];
....
}
3.2 使用线程局部的数据
使用thread specific data或者Thread local Storage技术的函数
3.3 利用锁技术
spinlock, mutex_lock , ...
4. 非线程安全函数的例子
4.1 libc 中的ctime
返回了全局的静态分配的_tmbuf
struct tm _tmbuf;
/* Return the `struct tm' representation of *T in local time. */
struct tm *
localtime (t)
const time_t *t;
{
return __tz_convert (t, 1, &_tmbuf);
}
- 设计多线程安全库
- 设计安全的多线程应用程序(线程安全)
- 多线程安全的滑动窗口设计实现
- java 设计类时考虑多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- servlet的多线程与设计线程安全的servlet
- java多线程(五) 之 设计线程安全的类
- 多线程 以及多线程安全
- 多线程 继承Thread类 实现Runnable接口 多线程安全 synchronized 单例设计懒汉 锁死
- linux 目录结构
- C++:多线程类库的设计与实现(六)
- C++:多线程类库的设计与实现(七)
- C++多线程类库的设计与实现(八)完
- 关于指针
- 设计多线程安全库
- jcifs.smb.SmbException: 0xC000007F 错误解决方案
- 双色球
- 三星4核处理器4412应用
- MFC初始化时隐藏对话框(无闪烁)
- floyd-warshall 算法分析 每对顶点之间的最短路
- Unable to resolve superclass of错误的解决方法
- 代码设置按钮状态
- android添加监听器