Linux企业级开发技术(7)——libevent企业级开发之锁和线程

编写多线程程序的时候,在多个线程中同时访问同样的数据并不总是安全的。

libevent的结构体在多线程下通常有三种工作方式:

1、某些结构体内在地是单线程的:同时在多个线程中使用它们总是不安全的。

2、某些结构体具有可选的锁:可以告知libevent是否需要在多个线程中使用每个对象。

3、某些结构体总是锁定的:如果libevent在支持锁的配置下运行,在多个线程中使用它们总是安全的。

为获取锁,在调用分配需要在多个线程间共享的结构体的libevent函数之前,必须告知libevent使用哪个锁函数。

如果使用pthreads库,或者使用Windows本地线程代码,那么你是幸运的:已经有设置libevent使用正确的pthreads或者Windows函数的预定义函数。

接口:

int evthread_use_pthreads(void);

函数在成功时返回0,失败时返回-1。

如果使用不同的线程库,则需要一些额外的工作,必须使用你的线程库来定义函数去实现:

原文地址:https://www.cnblogs.com/new0801/p/6176898.html