gpt4 book ai didi

C、使用 "usleep"函数编译报错

转载 作者:太空宇宙 更新时间:2023-11-04 05:35:16 25 4
gpt4 key购买 nike

我使用 Ubuntu Linux。当我尝试使用“usleep”函数时,我得到了关于“函数 usleep 的隐式声明”的信息。以下是错误代码:

muteks.c:70:4: warning: implicit declaration of function ‘usleep’ [-Wimplicit-function-declaration]
usleep(300);
^

源代码:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <pthread.h>

void * klientWatek (void* arg);
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static int lKf = 10;
int lKl = 15;

int main ()
{
pthread_t *klientTab;
int *klientTabId;
int lKr = 1;
int i;
// pamięć dla identyfikatora wątku
klientTab = (pthread_t *) malloc (lKl* sizeof (pthread_t));
klientTabId = (int *) malloc (lKl*sizeof (int)); //pamięć dla id
// będącego argumentem przekazywanym do funkcji
for (i=0; i<lKl; i++) klientTabId[i]=i; //przypisanie

printf("\nOtwieramy pub (simple)!\n");
printf("\nLiczba wolnych kufli %d\n", lKf);

for (i=0; i<lKl; i++)
{
pthread_create (&klientTab[i], NULL, klientWatek,
&klientTabId[i]);
}

for (i=0; i<lKl; i++)
{ //wątek joinable, ręcznie zwalniamy zasoby
pthread_join (klientTab[i], NULL);
}

printf("\nZamykamy pub!\n");
printf("\nLiczba wolnych kufli %d\n", lKf);

void * klientWatek (void * argWsk)//zostanie przekazany klientTabId[i]
{
int mojId = * ( (int *) argWsk);
int i,j;

int pobranoKufel = 0;
int ileMuszeWypic = 2;

printf ("\nKlient %d, wchodzę do pubu\n", mojId);

for (i=0; i<ileMuszeWypic; i++)
{
do
{
pthread_mutex_lock(&mutex);
if (lKf > 0)
{
printf("\nSprawdziłem, czy jest wolny kufel\n");
lKf--;
pobranoKufel = 1;
printf("\nWziąłem kufel\n");
}

pthread_mutex_unlock(&mutex);
} while (pobranoKufel == 0);
printf("\nKlient %d, wybieram kufel\n", mojId);

j=0;
printf("\nKlient %d, nalewam z kranu %d\n", mojId, j);
usleep(300);

printf("\nKlient %d, pije\n", mojId);
nanosleep((struct timespec[]){{0, 500000000L}},NULL);

printf("\nKlient %d, odkladam kufel\n", mojId);

if (pobranoKufel == 1)
{
pthread_mutex_lock(&mutex);
pobranoKufel=0;
lKf++;
pthread_mutex_unlock(&mutex);
}
}
printf("\nKlient %d, wychodzę z pubu\n", mojId);

return (NULL);
}

我尝试编译程序的方式:

gcc -Wall -pedantic -std=gnu99 -pthread muteks.c -o przyklad

我现在该怎么办,编译它?

最佳答案

usleep() 在您未包含的标准 header unistd.h 中声明。包括它:

#include <unistd.h>

相关说明:usleep() 自 POSIX-2008 以来已被删除,建议使用 nanosleep()相反。

关于C、使用 "usleep"函数编译报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40451142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com