我是gwan的新手,目前在gwan上编写一个读/写静态文件,但是,我发现当我尝试打开文件(对应一些参数传递给gwan)时,它会运行main()两次(或无限循环),任何人都可以帮忙吗?谢谢!
这是getanddelivery.c
int main(int argc, char *argv[])
{
global_count = 1;
printf("Global count : %d\n", global_count);
xbuf_t *reply = get_reply(argv);
char *name = 0;
while(global_count<argc){
get_arg("zoneid=", &name, global_count, argv);
if(hadCache(name)){
printf("have file\n");
}else{
printf("No file found!\n");
}
global_count++;
}
xbuf_xcat(reply, "Work!");
return 200;
}
函数hadCache是检查静态文件是否存在! 再次感谢!!
谢谢吉尔回答我的问题!我修改了代码,现在就可以了! 但是,我尝试在gwan / include / myownfunction.h&amp;上使用我自己的头文件和函数文件。 hadCache.c,我发现getanddelivery.c通常无法调用hadCache()函数
#include "myownfunction.h"
int main(){ ... }
myownfunction.h
#include <stdio.h>
#include <stdbool.h>
bool hadCache(char* zoneid);
hadCache.c
#include "myownfunction.h"
bool hadCache(char* zoneid){...}
但是,如果我在getanddelivery文件中替换它,它会起作用:
Replace this #include "myownfunction.h"
By #include "hadCache.c"
你能帮帮我吗?非常感谢你!
答案 0 :(得分:0)
您的问题来自线程不安全的 global_count ++; 变量增量,这将导致并发下的havock。
您应该阅读原子性并使用原子增量。请参阅另一个问题:feature request: an atomicAdd() function included in gwan.h。