线程功能之外的互斥锁是否仍会锁定线程?

时间:2018-11-07 13:47:48

标签: c++ c pthreads

我想知道我是否有一个由多个类共享的互斥锁变量,并且在线程中我在对象上调用了一个方法,并且在该方法中锁定了互斥锁变量是否会相应地起作用?

我的项目中的所有文件都包含以下标头,以便可以全局使用互斥锁

#ifndef THREADS
#define THREADS
#include <pthread.h>
extern pthread_mutex_t lock;
#define lock_thread() pthread_mutex_lock(&lock);
#define unlock_thread() pthread_mutex_unlock(&lock);
#endif

因此,在我的线程功能中,我可以在访问关键部分时锁定和解锁:

lock_thread();
user = create_user(username, password, ID++, license_num, preg, disability, vehicle_type);
unlock_thread();

现在,在我创建用户后,该用户可以访问他们具有权限的特定“操作”。每个Action是带有“ perform”方法的自己的类。

例如:

Action newaction;
newaction.perform(socket, user.getID);

我传入了当前线程和用户ID的套接字,因为它将与数据库进行交互。现在,如果我选择在perform方法中执行“ lock_thread()”,它的执行方式将类似于将其锁定在线程函数本身中吗?

0 个答案:

没有答案