C ++ / Classes&线程

时间:2016-01-21 17:56:06

标签: c++ multithreading class

我想在c'tor中初始化uniqe锁,但我没有找到方法......

class readersWriters{
private:
mutex _mu;
unique_lock<mutex> _locker;
condition_variable _condW;
condition_variable _condR;
int _readersNumber;
int _writersNumber;
std::string _fileName;

public:
readersWriters(std::string fileName);
void readLock();
void writeLock();
void readUnlock();
void writeUnlock();
std::string readLine(int lineNumber); //lineNumber - line number to read
void WriteLine(int lineNumber, std::string newLine);//lineNumber - line    number to write 
};

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我不确定这是不是一个好主意,但要应用正确的语法,您需要构造函数成员初始化列表:

from selenium import webdriver

phantom = webdriver.PhantomJS()    
phantom.get('index.html')

phantom.execute_script("window.alert = function(msg){ window.msg = msg; };")

phantom.find_element_by_id('button').click()

alert_text = phantom.execute_script("return window.msg;")
print(alert_text)

请注意,这会使您的整个类定义仅仅是 readersWriters(string fileName) : _mu(), _locker(_mu) {} 的代理,并且互斥锁会在整个生命周期内保持锁定。

因此,_locker长是该类的成员,所以它没有多大意义。

如果你的类在内部使用线程,你应该在可以同时调用的函数中使用_mu作为局部变量。