向现有C API添加功能

时间:2011-03-14 17:55:59

标签: c api thread-safety

我有一个遗留的C API,我需要添加功能。具体来说,我需要让这些API的一些调用是线程安全的,因为这样的调用:

A_DoFoo(HandleA a)

使用A类所有句柄共享的对象。

我的第一个想法是向API添加一个如下所示的函数:

A_DoFooEx(HandleA a, HandleB b)

这是正常的做法吗?

(由于多年接触Win32 SDK,我只使用了Ex后缀。为函数提供更具描述性的名称更有意义吗?)

2 个答案:

答案 0 :(得分:1)

在新名称下添加另一个函数是直接C中处理此问题的标准(实际上是唯一的)方法(在C ++中,您可以添加新的重载并保留旧名称)。我不是Ex后缀的忠实粉丝,因为它没有告诉你新旧API之间的区别是什么。另一方面,不要像A_DoFoo_ThreadSafe那样长期和令人发指的事情让人感到悲伤,这会伤害你的可读性。

在这种情况下,我会尝试使用一个名称来表明HandleB的要求是什么。如果你告诉我们这个API实际上做了什么,我们可以提出更具体的建议。

答案 1 :(得分:0)

我更喜欢为线程安全代码编写包装器。所以我可以嵌入任何线程安全代码并使其成为线程安全使用包装器。

您应始终使用正确的命名格式。 它将帮助您轻松维护代码并使其更具可读性。