如何强制在构造函数中调用函数?

时间:2016-07-30 02:55:10

标签: c++ multithreading c++98

我们有一个共享库,我们需要使线程安全,我们发现只有导致问题的是一个线程安全的单例类,其中我们有类似下面的代码:

<meta charset="utf-8">

所以问题是两个客户端线程同时调用这个getLocationID函数并且都发现它是空的然后在populateLocationMap中我们从一些文件中读取并在map中插入locationID和locationName,并且在这个并行插入期间我们的库崩溃了我们不想把互斥体放在这里,因为它会影响并行性,并且populate函数将被调用一次。现在因为这是线程安全的单例,所以我们想把所有这些populateFunction放在构造函数中,这也符合我们的功能要求但是问题如果我们有一些未来的增强我们如何确保只在构造函数中调用类的私有函数

1 个答案:

答案 0 :(得分:2)

  

我们如何才能确保只调用类的私有函数   构造函数?

我见过的解决方案用于更大的嵌入式系统开发......在任何其他线程运行之前,在'main'线程中调用构造函数。这假定“LocationMap.empty()”在“populateLocationMap()”运行后从所有线程正常工作。