winterfell30
V2EX  ›  C++

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

  •  
  •   winterfell30 · Aug 11, 2020 · 3138 views
    This topic created in 2282 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
    shylockhg
    Aug 11, 2020
    1
    函数指针
    abbycin
    abbycin
    Aug 11, 2020 via Android
    2
    abbycin/tools/tree/master/fm 可行?
    winterfell30
    winterfell30
    OP
    Aug 11, 2020
    3
    @shylockhg 函数指针确实可以
    winterfell30
    winterfell30
    OP
    Aug 11, 2020
    4
    @abbycin 哇我看一下多谢大佬
    CismonX
    CismonX
    Aug 11, 2020 via iPhone
    5
    std::type_info 的 name() 是不保证唯一性的,标准里有说。但是 std::type_index 可以。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4447 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:01 · PVG 16:01 · LAX 00:01 · JFK 03:01
    ♥ Do have faith in what you're doing.