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章列举了分布式系统的挑战及其对程序设计(服务端编程)的影响,例如可靠性、可维护性等。
ShockHosting商家在前面文章中有介绍过几次。ShockHosting商家成立于2013年的美国主机商,目前主要提供虚拟主机、VPS主机、独立服务器和域名注册等综合IDC业务,现有美国洛杉矶、新泽西、芝加哥、达拉斯、荷兰阿姆斯特丹、英国和澳大利亚悉尼七大数据中心。这次有新增日本东京机房。而且同时有推出5折优惠促销,而且即刻使用支付宝下单的话还可获赠10美金的账户信用额度,折扣相比之前的常规...
Budgetvm(原EZ机房),2005年成立的美国老品牌机房,主打美国4个机房(洛杉矶、芝加哥、达拉斯、迈阿密)和日本东京机房的独立服务器和VPS业务,而且不限制流量,默认提供免费的1800G DDoS防御服务,支持IPv6和IPMI,多种免费中文操作系统可供选择,独立服务器主打大硬盘,多硬盘,大内存,用户可以在后台自行安装系统等管理操作!内存可定制升级到1536G,多块硬盘随时加,14TBSA...
触摸云触摸云(cmzi.com),国人商家,有IDC/ISP正规资质,主营香港线路VPS、物理机等产品。本次为大家带上的是美国高防2区的套餐。去程普通线路,回程cn2 gia,均衡防御速度与防御,防御值为200G,无视UDP攻击,可选择性是否开启CC防御策略,超过峰值黑洞1-2小时。最低套餐20M起,多数套餐为50M,适合有防御型建站需求使用。美国高防2区 弹性云[大宽带]· 配置:1-16核· ...
linux多线程编程为你推荐
秦殇内存修改器秦殇的修改器怎么用啊?修改器的版本是1.1p图软件哪个好用什么P图软件好用?杀毒软件哪个好杀毒软件哪个最好燃气热水器和电热水器哪个好燃气热水器与电热水器的优缺点?音乐播放器哪个好音乐播放器哪个最好用三国游戏哪个好玩哪款三国游戏最好玩`!雅思和托福哪个好考考托福好还是雅思好群空间登录群空间无法正常登陆的问题电信dns服务器地址电信光纤的dns地址怎么设置dns服务器什么意思DNS什么意思?
仿牌空间 host1plus 踢楼 highfrequency 老鹰主机 diahosting 国内永久免费云服务器 evssl证书 美国php空间 毫秒英文 建立邮箱 美国网站服务器 重庆双线服务器托管 web服务器安全 linux使用教程 万网空间购买 云营销系统 免费asp空间 免费的域名 万网主机 更多