V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
winterfell30
V2EX  ›  C++

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

  •  
  •   winterfell30 · 2020-08-11 19:47:26 +08:00 · 2076 次点击
    这是一个创建于 1325 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2020-08-11 20:04:21 +08:00
    shylockhg
        1
    shylockhg  
       2020-08-11 19:50:25 +08:00
    函数指针
    abbycin
        2
    abbycin  
       2020-08-11 19:54:07 +08:00 via Android
    abbycin/tools/tree/master/fm 可行?
    winterfell30
        3
    winterfell30  
    OP
       2020-08-11 20:03:49 +08:00
    @shylockhg 函数指针确实可以
    winterfell30
        4
    winterfell30  
    OP
       2020-08-11 20:04:09 +08:00
    @abbycin 哇我看一下多谢大佬
    CismonX
        5
    CismonX  
       2020-08-11 20:04:21 +08:00 via iPhone
    std::type_info 的 name() 是不保证唯一性的,标准里有说。但是 std::type_index 可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   980 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.