线程的命名约定?

2022-09-01 00:10:13

命名线程很有帮助,这样就可以整理出哪些线程正在执行诊断和调试目的。

对于重度多线程应用程序中的线程,是否有比另一个更好地工作的特定命名约定?有什么指导方针吗?线程的名称中应包含哪些类型的信息?在命名可能对他人有帮助的线程方面,您学到了什么?


答案 1

据我所知,没有标准。随着时间的推移,我发现这些指南很有帮助:

  • 使用短名称,因为它们不会使日志文件中的行太长。

  • 在重要部分开头的位置创建名称。图形用户界面中的日志查看器往往具有带有列的表,并且线程列通常很小,或者由您变小以读取其他所有内容。

  • 不要在线程名称中使用“线程”一词,因为它很明显。

  • 使线程名称易于 grep 化。避免发音相似的线程名称

  • 如果有多个相同性质的线程,请使用对应用程序的一个执行或一个日志文件(以符合您的日志记录习惯者为准)所独有的 ID 枚举它们。

  • 避免像“WorkerThread”(你如何命名接下来的5个worker线程?),“GUIThread”(哪个GUI?它适用于一个窗口?对于所有内容?)或“计算”(它计算什么?)这样的泛化。

  • 如果您有一个使用线程名称来 grep 应用程序日志文件的测试组,请不要在一段时间后重命名线程。你的测试人员会因为你这样做而讨厌你。经过良好测试的应用程序中的线程名称应该保留下来。

  • 当您有为网络连接提供服务的线程时,请尝试在线程名称中包含目标网络地址(例如channel_123.212.123.3)。不要忘记枚举,但如果有多个连接到同一主机。

如果您有许多线程并且忘记命名一个线程,则您的日志机制应输出唯一的线程ID(特定于API,例如通过调用pthread_self())


答案 2

命名线程很有用,您应该遵循命名约定,该约定适用于其他任何内容,无论是变量,方法还是类。根据他们所做的事情命名它们,并简洁明了。如果您遇到需要线程转储的问题,最好查看名称并知道在代码中查找问题的位置,而不是检查堆栈跟踪和猜测。

唯一的区别是,如果有多个相同类型的线程,则确实应该添加某种类型的索引,因为线程名称应该是唯一的,以满足某些API。如果您显示线程名称以了解应用程序在不同线程上发生部分执行时的行为,则它还可以帮助记录。