V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
winterfell30
V2EX  ›  C++

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

  •  
  •   winterfell30 · Aug 11, 2020 · 2764 views
    This topic created in 2087 days ago, the information mentioned may be changed or developed.

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

    5 replies    2020-08-11 20:04:21 +08:00
    shylockhg
        1
    shylockhg  
       Aug 11, 2020
    函数指针
    abbycin
        2
    abbycin  
       Aug 11, 2020 via Android
    abbycin/tools/tree/master/fm 可行?
    winterfell30
        3
    winterfell30  
    OP
       Aug 11, 2020
    @shylockhg 函数指针确实可以
    winterfell30
        4
    winterfell30  
    OP
       Aug 11, 2020
    @abbycin 哇我看一下多谢大佬
    CismonX
        5
    CismonX  
       Aug 11, 2020 via iPhone
    std::type_info 的 name() 是不保证唯一性的,标准里有说。但是 std::type_index 可以。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3872 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 00:50 · PVG 08:50 · LAX 17:50 · JFK 20:50
    ♥ Do have faith in what you're doing.