在下面的代码片段中使用“usleep”有什么用?

时间:2015-05-22 14:10:37

标签: c++

这是针对codechef问题的问题(问题代码:INTEST)的解决方案的代码片段。问题是在运行时处理(找出可被k整除的数字)每秒至少2.5MB的输入数据。该解决方案的作者最初使用此

声明了缓冲区
uint8_t g_buffer[256 * 1024];

然后使用

读取输入
read(0, p, sizeof(g_buffer)) //function of unistd.h

之后

unsigned int i = 0, v;
for (; i < in; ++i) {

    if (pend - p < 16)
    {
        memcpy(pbegin, p, pend - p);

        int r = read(0, pbegin + (pend - p), sizeof(g_buffer) - (pend - p));

        if (r < 32 * 1024) usleep(1000);

        pend = pbegin + (pend - p) + r;
        p = pbegin;
    }

    for (v = 0; *p >= '0' && *p <= '9';++p )
        v = v * 10 + (*p - '0');

    if (*p < '0' || *p > '9') { ++p;
        if (*p < '0' || *p > '9') { ++p;
    }}

    if (v % ik == 0) ++n;

  }

0 个答案:

没有答案