Linux企业级开发技术(7)——libevent企业级开发之锁和线程
2014-09-23 15:06
169 查看
编写多线程程序的时候,在多个线程中同时访问同样的数据并不总是安全的。
libevent的结构体在多线程下通常有三种工作方式:
1、某些结构体内在地是单线程的:同时在多个线程中使用它们总是不安全的。
2、某些结构体具有可选的锁:可以告知libevent是否需要在多个线程中使用每个对象。
3、某些结构体总是锁定的:如果libevent在支持锁的配置下运行,在多个线程中使用它们总是安全的。
为获取锁,在调用分配需要在多个线程间共享的结构体的libevent函数之前,必须告知libevent使用哪个锁函数。
如果使用pthreads库,或者使用Windows本地线程代码,那么你是幸运的:已经有设置libevent使用正确的pthreads或者Windows函数的预定义函数。
接口:
函数在成功时返回0,失败时返回-1。
如果使用不同的线程库,则需要一些额外的工作,必须使用你的线程库来定义函数去实现:
libevent的结构体在多线程下通常有三种工作方式:
1、某些结构体内在地是单线程的:同时在多个线程中使用它们总是不安全的。
2、某些结构体具有可选的锁:可以告知libevent是否需要在多个线程中使用每个对象。
3、某些结构体总是锁定的:如果libevent在支持锁的配置下运行,在多个线程中使用它们总是安全的。
为获取锁,在调用分配需要在多个线程间共享的结构体的libevent函数之前,必须告知libevent使用哪个锁函数。
如果使用pthreads库,或者使用Windows本地线程代码,那么你是幸运的:已经有设置libevent使用正确的pthreads或者Windows函数的预定义函数。
接口:
int evthread_use_pthreads(void);
函数在成功时返回0,失败时返回-1。
如果使用不同的线程库,则需要一些额外的工作,必须使用你的线程库来定义函数去实现:
相关文章推荐
- Linux企业级开发技术(7)——libevent企业级开发之锁和线程
- Linux企业级开发技术(6)——libevent企业级开发之内存管理
- Linux企业级开发技术(6)——libevent企业级开发之内存管理
- Linux企业级开发技术(5)——libevent企业级开发之简介
- Linux企业级开发技术(5)——libevent企业级开发之简介
- Linux企业级开发技术(4)——epoll企业级开发之epoll例程
- Linux下创建进程线程以及通信技术的使用
- linux 线程私有数据之一键多值技术TSD池
- Linux线程技术的概念与技术发展
- Linux下的线程技术
- 【Linux开发技术之常见问题】一个建立线程时常见的问题:invalid conversion from `void*' to `void*(*)(void*)
- Linux企业级开发技术(2)——epoll企业级开发之epoll接口
- Linux企业级开发技术(3)——epoll企业级开发之epoll模型
- 【Linux开发技术之常见问题】一个建立线程时常见的问题:invalid conversion from `void*' to `void*(*)(void*)
- Linux线程技术:概念与技术发展
- Linux企业级开发技术(4)——epoll企业级开发之epoll例程
- 【线程】linux之多线程同步互斥技术
- Linux企业级开发技术(1)——epoll企业级开发之简介
- Linux线程技术的概念与技术发展
- 了解Linux线程技术的概念与技术发展