首页 > 解决方案 > 函数的线程安全向量,每个函数都可以删除对该向量的访问

问题描述

假设我有一个包含函数向量的类(例如。std::vector<T(*)(...)>)。该类具有从该向量中添加和删除函数以及从头到尾调用它们的方法。

我希望这个类是线程安全的,所以在每个方法(添加、删除和调用)中,我使用信号量(特别是 win32 信号量对象)来锁定对向量的访问,同时方法完成使用它。但是,我希望能够在同一个线程中从向量中删除函数(只有当向量中的函数使用添加、删除或调用方法修改向量时才会发生这种情况)。有没有办法做到这一点 - 锁定向量不被其他线程访问,但能够从同一个线程访问?

标签: c++functionvectorthread-safety

解决方案


推荐阅读