C语言多线程

1 篇文章 0 订阅
1 篇文章 0 订阅

这次多线程问题,我们来以一个定时闹钟的形式讲解。

首先多线程需要一个头文件进行导包 #include <pthread.h>
接下来我们需要弄一个线程变量,创建到哪里都可以,不过推荐创建到外边,比如 pthread_t th1;

接下来我们开始创建线程,如果是大型工程的话,建议放到一个函数里边,这个语句是pthread_create(&th1,NULL,awm,NULL);,如图所示:
在这里插入图片描述
我这个里边的system(“pause”);只是暂停一下,没啥实际意义,不用去深究。
接下来重点看我那个语句,首先第一个是线程指针,当然就直接指向我们创建的那个线程变量啦,因为是指针,所以需要加上取地址符号。第二个是线程属性指针,一般情况下直接默认为空就可以了。第三个是函数指针,注意,必须放指针类型的函数。就是我们这个线程要执行的内容。第四个也是直接默认为空,也就可以了。
大家看我第三个里边放的是awm,那是因为我创了一个awm类型的函数指针,如图所示:
在这里插入图片描述
调用那个之前封装的awm函数,就可以运行了,此线程还有一些小小的不足,但是可以作为初步入门玩玩,大佬们请轻喷。

接下来要说一说获取系统时间的问题,要想设置闹钟,首先需要获取系统时间,然后跟我们原来设置的每件事情的事件进行对比,如果符合,那么则进行提醒。

首先获取时间函数需要头文件 #include <time.h>
我第二个截图当中有四行语句:
在这里插入图片描述
直接背下来也可以,这就是获取系统时间,对,就是你电脑上显示的正常时间的代码。
整个一系列下来,最后系统时间是以结构体的形式存放在p里边的,这个p里边的东西就多了
printf("%d\n",p->tm_sec); 输出的是获取的当前秒数
printf("%d\n",p->tm_min); 输出的是获取的当前分数
printf("%d\n",8+p->tm_hour); 输出的是获取的当前小时数,因为得到的是西方时间,所以正好差八个小时,所以这就有个很神奇的现象,比如你要设置在11月30日2点35分的闹铃,这个时候的时间应该设置为11月29日26时35分,至于为什么,去动动脑筋吧……
printf("%d\n",p->tm_mday); 输出的是获取的当前日数
printf("%d\n",1+p->tm_mon); 输出的是获取的当前月数,因为此数的范围是0—11,所以需要加个1
printf("%d\n",1900+p->tm_year); 输出的是获取的当前年份,因为此年份是从1990年开始算的,所以加上1990
printf("%d\n",p->tm_yday); 输出的是获取的从今年1月1日至今的总天数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值