【问题标题】:How to read, write file over gwan如何通过gwan读写文件
【发布时间】:2013-04-09 05:16:48
【问题描述】:

我是 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上使用自己的头文件和函数文件在gwan/include/myownfunction.h & 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"

你能帮帮我吗?非常感谢!

【问题讨论】:

  • 哦,我发现是缓存文件导致的不可预知的结果,我没有创建一些缓存文件!

标签: g-wan


【解决方案1】:

您的问题来自线程不安全的 global_count++; 变量增量,这将导致并发下的破坏。

您应该阅读原子性并使用原子增量。请参阅另一个问题:feature request: an atomicAdd() function included in gwan.h

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多