<分区>
所以,我正在玩 GNUTLS 中的回调。
我想将我的函数 handleSNI
传递给一个函数,但我也想传递一些其他重要参数(在调用时传递给 handleSNI)。
我可以在全局变量的函数之外执行它们,但这不是线程安全的。
这可能吗?如果没有,如何才能做到这一点?
<分区>
所以,我正在玩 GNUTLS 中的回调。
我想将我的函数 handleSNI
传递给一个函数,但我也想传递一些其他重要参数(在调用时传递给 handleSNI)。
我可以在全局变量的函数之外执行它们,但这不是线程安全的。
这可能吗?如果没有,如何才能做到这一点?
最佳答案
GnuTLS 支持回调中用户定义的参数。对于推拉功能,您可以通过 gnutls_transport_set_ptr
进行设置。 .您传递一个指向包含您的数据的结构的指针,并在您的回调中使用它。
在更一般的层面上,答案是:如果您的库不支持用户定义的参数,那您就不走运了。在 C 中,没有办法欺骗额外的参数。如果你找到这样的库,请帮自己一个忙,不要使用它。如果别无选择,您可以使用线程安全容器或线程本地存储。但是真的很丑。
关于c++ - 如何将函数作为参数传递给参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030367/