我该如何简化此代码?
mfer::i_value* make_empty_value(mfer::tag tag_)
{
if (tag_ == mfer::tag::mwf_ble) {
return memory_manager::instance().add(new mfer::t_value<mfer::tag::mwf_ble>());
} else if (tag_ == mfer::tag::mwf_chn) {
return memory_manager::instance().add(new mfer::t_value<mfer::tag::mwf_chn>());
} else if (tag_ == mfer::tag::mwf_blk) {
return memory_manager::instance().add(new mfer::t_value<mfer::tag::mwf_blk>());
} else if (tag_ == mfer::tag::mwf_seq) {
return memory_manager::instance().add(new mfer::t_value<mfer::tag::mwf_seq>());
} else if (tag_ == mfer::tag::mwf_man) {
return memory_manager::instance().add(new mfer::t_value<mfer::tag::mwf_man>());
} else if (tag_ == mfer::tag::mwf_ivl) {
return memory_manager::instance().add(new mfer::t_value<mfer::tag::mwf_ivl>());
} else if (tag_ == mfer::tag::mwf_sen) {
return memory_manager::instance().add(new mfer::t_value<mfer::tag::mwf_sen>());
} else if (tag_ == mfer::tag::mwf_wfm) { …Run Code Online (Sandbox Code Playgroud) 我在C语言中开发文件系统.FUSE是事件驱动系统,因此它将自己的操作码与用户的回调函数相匹配.据我所知,C中的静态函数仅表示范围限制 - 即如果静态函数f()是在foo.c中编写的,则其符号的范围仅为foo.c而不是每个其他源文件.但我的团队成员说静态函数不是线程安全的,所以我们应该使回调非静态.(我们的系统必须在多线程环境中工作,所以它应该考虑并发.)
我整天用Google搜索,但我找不到它.我想问一下你对C中静态函数的线程安全性的认识或看法.