c++里怎么对函数做 hash,或者获得函数的函数签名

2020-08-11 19:47:26 +08:00
 winterfell30

想在线程池中加一个功能,加 task 的时候判断这个函数已经在池子里运行并且没有运行结束的话就不再重新 push,不修改业务代码的话,想到的一个方案就是在线程池里面维护一个 function 的 map 来判断,或者不直接对 function 做 hash,能把 function 转化成一个唯一的 string (类似函数签名)也可以,试了一下 typeid(function).name()发现普通函数可以,成员函数打印出来的都是类名,大佬们有啥好办法吗

2099 次点击
所在节点    C++
5 条回复
shylockhg
2020-08-11 19:50:25 +08:00
函数指针
abbycin
2020-08-11 19:54:07 +08:00
abbycin/tools/tree/master/fm 可行?
winterfell30
2020-08-11 20:03:49 +08:00
@shylockhg 函数指针确实可以
winterfell30
2020-08-11 20:04:09 +08:00
@abbycin 哇我看一下多谢大佬
CismonX
2020-08-11 20:04:21 +08:00
std::type_info 的 name() 是不保证唯一性的,标准里有说。但是 std::type_index 可以。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/697486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX