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章列举了分布式系统的挑战及其对程序设计(服务端编程)的影响,例如可靠性、可维护性等。
易探云服务器怎么过户/转让?易探云支持云服务器PUSH功能,该功能可将云服务器过户给指定用户。可带价PUSH,收到PUSH请求的用户在接收云服务器的同时,系统会扣除接收方的款项,同时扣除相关手续费,然后将款项打到发送方的账户下。易探云“PUSH服务器”的这一功能,可以让用户将闲置云服务器转让给更多需要购买的用户!易探云服务器怎么过户/PUSH?1.PUSH双方必须为认证用户:2.买家未接收前,卖家...
博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...
香港ceranetworks提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 香港ceranetworks 8核16G 100M 这款产品 提速啦老板真的是豪气每次都给高配我测试 不像别的商家每次就给1核1G,废话不多说开始跑脚本。香港ceranetworks 2核2G 50G硬盘20M 69元/月30M 99元/月50M 219元/月100M 519元/月香港ceranetwork...
linux多线程编程为你推荐
软银支付日本支付平台浏览器哪个好目前什么浏览器最好用?浏览器哪个好什么浏览器最好?麒麟990和骁龙865哪个好骁龙八65和麒麟990谁强一点?视频剪辑软件哪个好有哪些好用的手机剪辑视频软件小说软件哪个好用免费有什么好用的免费小说软件压缩软件哪个好解压软件哪个好ps软件哪个好什么PS软件好网页传奇哪个好玩近有什么好玩的网页传奇介绍么网页传奇哪个好玩求最好玩的网页传奇?
过期域名查询 linuxapache虚拟主机 vir 免费申请网页 美国php主机 网站被封 长沙服务器 本网站在美国维护 web服务器的架设 789电视 什么是服务器托管 服务器干什么用的 vip购优惠 cdn加速是什么 申请免费空间和域名 免费的域名 阿里云邮箱登陆地址 云服务是什么意思 睿云 小夜博客 更多