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章列举了分布式系统的挑战及其对程序设计(服务端编程)的影响,例如可靠性、可维护性等。
DMIT.io是成立于2018年的一家国外主机商,提供VPS主机和独立服务器租用,数据中心包括中国香港、美国洛杉矶和日本等,其中日本VPS是新上的节点,基于KVM架构,国际线路,1Gbps带宽,同时提供月付循环8折优惠码,或者年付一次性5折优惠码,优惠后最低每月8.72美元或者首年65.4美元起,支持使用PayPal或者支付宝等付款方式。下面列出部分日本VPS主机配置信息,价格以月付为例。CPU:...
也有在上个月介绍到糖果主机商12周年的促销活动,我有看到不少的朋友还是选择他们家的香港虚拟主机和美国虚拟主机比较多,同时有一个网友有联系到推荐入门的个人网站主机,最后建议他选择糖果主机的迷你主机方案,适合单个站点的。这次商家又推出所谓的秋季活动促销,这里一并整理看看这个服务商在秋季活动中有哪些值得选择的主机方案,比如虚拟主机最低可以享受六折,云服务器可以享受五折优惠。 官网地址:糖果主机秋季活动促...
数脉科技六月优惠促销发布了!数脉科技对香港自营机房的香港服务器进行超低价促销,可选择30M、50M、100Mbps的优质bgp网络。更大带宽可在选购时选择同样享受优惠,目前仅提供HKBGP、阿里云产品,香港CN2、产品优惠码续费有效,仅限新购,每个客户可使用于一个订单。新客户可以立减400元,或者选择对应的机器用相应的优惠码,有需要的朋友可以尝试一下。点击进入:数脉科技官方网站地址数脉科技是一家成...
linux多线程编程为你推荐
秦殇内存修改器秦殇1.30内存修改器Vista不能用吗??!2014年万圣节是几月几日万圣节是几月几日免费送q币活动免费送q币送钻的活动苹果x和xr哪个好iphone X和iphone XR哪个比较好?买哪个合适?杀毒软件哪个好杀毒软件哪个好用电脑管家和360哪个好360卫士和电脑管家,哪个更好电视直播软件哪个好电视直播软件哪个好英语词典哪个好什么英语词典好?加速器哪个好网络游戏加速器哪个好用oppo和vivo哪个好vivo和oppo哪个更耐用
域名网站 美国vps评测 景安vps 浙江vps 草根过期域名 greengeeks warez 5折 stablehost 老鹰主机 uk2 ix主机 国内永久免费云服务器 rak机房 koss 河南m值兑换 ntfs格式分区 如何安装服务器系统 智能dns解析 监控服务器 更多