【发布时间】:2010-04-23 15:59:05
【问题描述】:
两个线程将使用相同的func()。这两个线程应该是互斥的。如何让它正常工作?
(输出应为“abcdeabcde”)
char arr[] = "ABCDE";
int len = 5;
void func() {
for(int i = 0; i <len;i++)
printf("%c",arr[i]);
}
【问题讨论】:
-
不!它让我困扰
-
为什么不只是
printf("%s", arr)? -
printf 中的内容并不重要,我只是想知道我是否可以使用线程安全的基本代码
-
@Vlad:因为您的代码要求数组以 nul 结尾,而提问者的代码不需要?这显然只是一个例子,你不妨说“为什么不完全摆脱 arr 和 len 而只做
printf("ABCDE");”;-) -
@Steve: AFAIK 字符串
"ABCDE"是 隐式以空值终止。恕我直言,使用printf(s)而不是printf("%s", s)(即使对于字符串常量s)是一种不好的风格,因为它默默地假设s不包含特定于 printf 的控制字符,(1)可能不是将来的情况,并且 (2) 没有记录在案,因此很容易被开发人员忽略。