linux中有什么函数可替代waitForSingleObject

linux中有什么函数可替代waitForSingleObject,第1张

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

Windows中的WaitForSingleObject()函数对应在Linux中的sem_wait(),SetEvent对应sem_post(),

参考下面的Linux程序:

#include

#include

#include

#include

#include

#include

char tem[10]//读写公共区

sem_t sem

void* thread_fun(void*)

int main()

{

int counter=0

pthread_t mythread

sem_init(&sem,0,0)

pthread_create(&mythread,NULL,thread_fun,NULL)

while(counter<10) //往读写区里写10次'f'

{

tem[counter]='f'

counter++

sem_post(&sem)

}

pthread_join(mythread,NULL)//等待子线程

sem_destroy(&sem)

exit(0)

}

void* thread_fun(void* arg) //子线程函数

{

int counter=0

while(counter<10&&sem_wait(&sem)==0)

{

printf("%c",tem[counter])//读出来显示

counter++

//sem_wait(&sem)

}

pthread_exit(NULL)

}

不是信号量的问题

printf函数,是先写到输出缓冲,遇到\n时,或者缓冲区满时,或者有强制输出(fflush)时,才会将缓冲区里的内容输出到屏幕上(标准输出设备:stdout)。你的代码里面并没有以上3个触发条件的任意一种,所以printf的内存没有实际输出到屏幕上。

你只要在每个printf函数后面加上fflush(stdout)就可以了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/164723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-24
下一篇2023-03-24

发表评论

登录后才能评论

评论列表(0条)

    保存