以下代码中是否存在临界区?
Are there critical sections in the following code?
以下代码片段被单个进程中的多个线程定期调用。这里的问题是,是否有临界区?
第一个代码:
struct object {
struct object *nxt;
};
void delete(object **top, object *deletable) {
object *current, *pred;
if (*top == deletable) {
*top = deletable->nxt;
} else {
pred = top;
current = (*top)->nxt;
while (current && (current != deletable)) {
pred = current;
current = current->nxt;
}
if (current) {
pred = current->nxt;
}
}
第二个代码;
int shift(int param) {
int result = 654321;
result = result ^ param;
param = param * result;
result = (param >> 9) ^ ~result;
return result;
}
目前我不认为有任何关键部分,因为变量不操作相同的数据。但我不确定这一点。我对关键部分和多线程很陌生。
您的代码中没有全局 and/or 静态变量。
没有其他类型的共享资源(例如,同一个文件在不同地方使用)。
因此,这里没有临界区。
以下代码片段被单个进程中的多个线程定期调用。这里的问题是,是否有临界区?
第一个代码:
struct object {
struct object *nxt;
};
void delete(object **top, object *deletable) {
object *current, *pred;
if (*top == deletable) {
*top = deletable->nxt;
} else {
pred = top;
current = (*top)->nxt;
while (current && (current != deletable)) {
pred = current;
current = current->nxt;
}
if (current) {
pred = current->nxt;
}
}
第二个代码;
int shift(int param) {
int result = 654321;
result = result ^ param;
param = param * result;
result = (param >> 9) ^ ~result;
return result;
}
目前我不认为有任何关键部分,因为变量不操作相同的数据。但我不确定这一点。我对关键部分和多线程很陌生。
您的代码中没有全局 and/or 静态变量。
没有其他类型的共享资源(例如,同一个文件在不同地方使用)。
因此,这里没有临界区。