linux多线程编程linux多线程服务端编程 看什么书
linux多线程编程 时间:2020-12-30 阅读:(
)
用C语言在windows或者Linux上面,编写一个多线程程序
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
int *pt=(int*)lpParam;
printf("I am tread %d
",*pt);
}
int main()
{
const int Count=4;
int datas[Count];
DWORD dwThreadId[Count];
HANDLE hThread[Count];
int i;
for(i=0;i<Count;i++)
{
datas[i]=i+1;
hThread[i]=CreateThread(NULL,0,ThreadProc,&datas[i],0,&dwThreadId[i]);
}
WaitForMultipleObjects(Count,hThread,TRUE,INFINITE);
for(i=0;i<Count;i++)
{
CloseHandle(hThread[i]);
}
system("PAUSE");
return EXIT_SUCCESS;
}编写一个多线程程序(C++),急呀,各位请帮忙。简单的就好了。
简单的多线程编程
Linux系统下的多线程遵循POSIX线程接口,称为pthread。
编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。
顺便说一下,Linux下pthread的实现是通过系统调用clone()来实现的。
clone()是Linux所特有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查看有关文档说明。
下面我们展示一个最简单的多线程程序example1.c。
/*example.c*/
#include<stdio.h>
#include<pthread.h>
voidthread(void)
{
inti;
for(i=0;i<3;i++)
printf("Thisisapthread.
");
}
intmain(void)
{
pthread_tid;
inti,ret;
ret=pthread_create(&id,NULL,(void*)thread,NULL);
if(ret!=0){
printf("Createpthreaderror!
");
exit(1);
}
for(i=0;i<3;i++)
printf("Thisisthemainprocess.
");
pthread_join(id,NULL);
return(0);
}
我们编译此程序:
example1.c-lpthread-oexample1
运行example1,我们得到如下结果:
Thisisthemainprocess.
Thisisapthread.
Thisisthemainprocess.
Thisisthemainprocess.
Thisisapthread.
Thisisapthread.
再次运行,我们可能得到如下结果:
Thisisapthread.
Thisisthemainprocess.
Thisisapthread.
Thisisthemainprocess.
Thisisapthread.
Thisisthemainprocess.
忘采纳谁能推荐本讲linux多线程编程的书籍
感觉书上面提到的多线程编程都比较偏理论,都主要是讲线程的创建,退出,同步等一些情况,APUE讲解的也比较好理解,另外推荐看一下linux下的一些开源代码,比如pcsc-lite,它的主体构架就是多线程的,可以适当的参考一下它的框架。
现在想学习Linux下的C++多线程编程和并发编程,已经会C++和基本的Linux系统编程,请问应该以什么样的路线
下一个git,然后找好的开源项目,开始跟人家的程序,跟代码最有效了Linux多线程编程:如何从一个配置文件中读取一个数,然后根据这个数来决定运行的线程数,希望能有点代码!
配置文件为 conf.txt
测试代码如下,注意链接的时候加上 -lpthread 这个参数
#include
#include //perror()
#include
#include //sleep()
#include // time()
#include //rand()
#define FD "conf.txt"
typedef void *(*fun)(void *);
struct my_struct
{
unsigned time_to_wait;
int n;
};
void *test_thread(struct my_struct *);
int main (int argc, char const *argv[])
{
FILE *fp = fopen(FD, "r");
if (fp == NULL)
{
perror(FD);
return -1;
}
srand((unsigned)time(NULL)); //初始化随机种子
int thread_count;
fscanf(fp, "%d", &thread_count);
fclose(fp);
if (thread_count {
printf("线程数 return -1;
}
pthread_t *ptid = (pthread_t *)malloc(sizeof(pthread_t) * thread_count); //保存线程ID
int i;
for (i = 0; i {
int tw = rand() % thread_count + 1; //随机等待时间
struct my_struct * p = (struct my_struct *)malloc(sizeof(struct my_struct));
if (p == NULL)
{
perror("内存分配错误");
goto ERROR;
}
p->time_to_wait = tw;
p->n = i + 1;
int rval = pthread_create(ptid + i, NULL, (fun) test_thread, (void *)(p)); //注意这里的强制转换(两个)
if (rval != 0)
{
perror("Thread creation failed");
goto ERROR;
}
//sleep(1); //这句加也可以,不加也可以。
最开始的时候加上这个是为了让两个线程启动的时候之间有一定的时间差
}
printf("主线程启动
");
fflush(stdout);
for (i = 0; i {
pthread_join(*(ptid + i), NULL); //等待所有线程退出。
}
printf("
主线程退出
");
ERROR:
free(ptid);
return 0;
}
void *test_thread(struct my_struct * p) //线程启动的时候运行的函数
{
printf("第%d个线程启动,预计运行%d秒
", p->n, p->time_to_wait);
fflush(stdout);
sleep(p->time_to_wait); //让线程等待一段时间
printf("第%d个线程结束
", p->n);
fflush(stdout);
free(p);
return NULL;
}
你的第二个问题我在百度HI回你了~linux多线程服务端编程 看什么书
这本书主要分享了作者在实现公司内部的分布式服务系统中积累的多线程和网络编程方面的经验,并介绍了C++ 在编写这种分布式系统的服务端程序时的功能取舍与注意事项,书中的很多决策(design decision)是在这一应用场景下做出的。
这本书没有细谈分布式系统的设计,只在第9章列举了分布式系统的挑战及其对程序设计(服务端编程)的影响,例如可靠性、可维护性等。
TmhHost 商家是一家成立于2019年的国人主机品牌。目前主营的是美国VPS以及美国、香港、韩国、菲律宾的独立服务器等,其中VPS业务涵盖香港CN2、香港NTT、美国CN2回程高防、美国CN2 GIA、日本软银、韩国cn2等,均为亚太中国直连优质线路,TmhHost提供全中文界面,支持支付宝付款。 TmhHost黑五优惠活动发布了,全场云服务器、独立服务器提供8折,另有充值返现、特价服务器促销...
印象云,成立于2019年3月的商家,公司注册于中国香港,国人运行。目前主要从事美国CERA机房高防VPS以及香港三网CN2直连VPS和美国洛杉矶GIA三网线路服务器销售。印象云香港三网CN2机房,主要是CN2直连大陆,超低延迟!对于美国CERA机房应该不陌生,主要是做高防服务器产品的,并且此机房对中国大陆支持比较友好,印象云美国高防VPS服务器去程是163直连、三网回程CN2优化,单IP默认给20...
Hostinger 商家我们可能一些新用户不是太熟悉,因为我们很多新人用户都可能较多的直接从云服务器、独立服务器起步的。而Hostinger商家已经有将近十年的历史的商家,曾经主做低价虚拟主机,也是比较有知名度的,那时候也有接触过,不过一直没有过多的使用。这不这么多年过去,Hostinger商家一直比较稳妥的在运营,最近看到这个商家在改版UI后且产品上也在活动策划比较多。目前Hostinger在进...
linux多线程编程为你推荐
316不锈钢和304哪个好保温杯不锈钢316和304哪个好自然吸气和涡轮增压哪个好涡轮增压和自然吸气哪个更适合跑视频剪辑软件哪个好电脑视频剪辑软件哪个最好用闪迪和金士顿哪个好固态硬盘哪个好,是金士顿好还是闪迪的英语词典哪个好英语词典哪种更好啊?网页传奇哪个好玩传奇网页游戏哪个好玩的最新相关信息行车记录仪哪个好行车记录仪哪个好腾讯空间登录QQ空间登录辽宁联通网上营业厅中国移动辽宁营业厅qq网盘在哪里QQ网盘在哪里
科迈动态域名 老鹰主机 dropbox网盘 一元域名 个人空间申请 佛山高防服务器 怎么建立邮箱 cloudlink 太原联通测速 服务器维护 美国盐湖城 工信部网站备案查询 万网空间 浙江服务器 免费php空间 1美元 贵州电信 火山互联 主机游戏 电脑主机声音大 更多