因此,我正在使用GNUTLS中的回调。
我想将我的函数传递handleSNI
给函数,但是我也想传递其他一些重要的参数(在调用SNI时传递给它)。
我可以在全局变量的函数外部执行它们,但这不是线程安全的。
可能吗?如果没有,怎么能做到这一点?
GnuTLS在回调中支持用户定义的参数。对于推拉功能,您可以通过进行设置gnutls_transport_set_ptr
。您将指针传递到包含数据的结构,并在回调中使用它。
在更一般的级别上,答案是:如果您的库不支持用户定义的参数,那么您很不走运。在C语言中,没有任何方法可以欺骗额外的参数。如果您找到了这样的库,请帮自己一个忙,不要使用它。如果没有其他选择,则可以使用线程安全容器或线程本地存储。但这确实很丑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句