本文目录一览:
- 1、C语言多线程编程为什么要用pthread
- 2、c语言编程问题题目,给定3条线的长度,求出用这3条线组成的三角形的面积
- 3、在C语言的多线程编程中一般volatile应该用在什么地方?
- 4、C语言程序编程
- 5、c语言多进程编程
C语言多线程编程为什么要用pthread
3个线程使用的都是同一个info 代码 Info_t *info = (Info_t *)malloc(sizeof(Info_t));只创建了一个info pthread_create(threads[i],NULL,calMatrix,(void *)info); 三个线程使用的是同一个 我把你的代码改了下
c语言编程问题题目,给定3条线的长度,求出用这3条线组成的三角形的面积
#include stdio.h
#include math.h
int main()
{
int a,b,c;
double area,p;
while(scanf("%d%d%d",a,b,c)==3)
{
if(a+bcb+caa+cb)
{
p=(a+b+c)/2.0;
area=sqrt(p*(p-a)*(p-b)*(p-c));
}
else
{
area=-1;
}
printf("%.0f\n",area);
}
return 0;
}
在C语言的多线程编程中一般volatile应该用在什么地方?
一般用在多线程程序中,由于某个变量可能被多个线程修改,因此,修饰为volatile,使其每次读取,都是从存储volatile变量的地址中去取,而不是取寄存器中的值。
volatile int a;
你的这种设想,都是最好要用volatile的地方,只要这个变量被反复频繁的修改,最好用volatile
C语言程序编程
10.
#includestdio.h
main()
{
int i,x,y,z;
printf("所有的水仙花数为:\n");
for(i=100;i1000;i++)
{
x=i/100;y=i/10%10;z=i%10;
if(i==x*x*x+y*y*y+z*z*z)
printf("%5d",i);
}
printf("\n");
}
c语言多进程编程
多进程这个词用得比较少,听过来有点不熟悉。你这个程序在linux下应该很容易实行,就是个进程间通信的问题,管道、消息队列、共享内存都可以,可以找找相关资料。昨天失言不好意思。
三个源文件分别为1.c、2.c、3.c一个头文件share.h。
share.h:
//共享的内存,两个数组
typedef struct{
int a[2];
int b[2];
int id;
}share_use;
1.c:
#includeunistd.h
#includestdio.h
#includestdlib.h
#includestring.h
#includesys/types.h
#includesys/ipc.h
#includesys/shm.h
#include"share.h"
int main(){
void *shared_memory = (void *)0;
share_use *share_stuff;
int shmid;
shmid=shmget((key_t)1234,sizeof(share_use),0666|IPC_CREAT);//创建共享内存
if(shmid==-1){
fprintf(stderr,"共享内存创建失败!\n");
exit(1);
}
shared_memory = shmat(shmid, (void *)0,0);//让进程可以访问共享内存
if(shared_memory == (void *)-1){
fprintf(stderr,"启用共享内存失败!\n)";
exit(1);
}
printf("Memory attached at %X\n",(int)shared_memory);
share_stuff = (share_use *)shared_memory;
share_stuff-id=0;
share_stuff-a[0]=1;
share_stuff-a[1]=2;
while(1){
if(share_stuff-id)
exit(0);
sleep(10);
}
}
2.c:
#includeunistd.h
#includestdio.h
#includestdlib.h
#includestring.h
#includesys/types.h
#includesys/ipc.h
#includesys/shm.h
#include"share.h"
int main(){
void *shared_memory = (void *)0;
share_use *share_stuff;
int shmid;
shmid=shmget((key_t)1234,sizeof(share_use),0666|IPC_CREAT);//创建共享内存
if(shmid==-1){
fprintf(stderr,"共享内存创建失败!\n");
exit(1);
}
shared_memory = shmat(shmid, (void *)0,0);//让进程可以访问共享内存
if(shared_memory == (void *)-1){
fprintf(stderr,"启用共享内存失败!\n");
exit(1);
}
printf("Memory attached at %X\n",(int)shared_memory);
share_stuff = (share_use *)shared_memory;
share_stuff-b[0]=share_stuff-a[0]*100;
share_stuff-b[1]=share_stuff-a[1]*100;
while(1)
{
if(share_stuff-id)
exit(0);
sleep(10);
}
}
3.c:
#includeunistd.h
#includestdio.h
#includestdlib.h
#includestring.h
#includesys/types.h
#includesys/ipc.h
#includesys/shm.h
#include"share.h"
int main(){
void *shared_memory = (void *)0;
share_use *share_stuff;
int shmid;
shmid=shmget((key_t)1234,sizeof(share_use),0666|IPC_CREAT);//创建共享内存
if(shmid==-1){
fprintf(stderr,"共享内存创建失败!\n");
exit(1);
}
shared_memory = shmat(shmid, (void *)0,0);//让进程可以访问共享内存
if(shared_memory == (void *)-1){
fprintf(stderr,"启用共享内存失败!\n");
exit(1);
}
printf("Memory attached at %X\n",(int)shared_memory);
share_stuff = (share_use *)shared_memory;
printf("共享内存中有元素:%d , %d",share_stuff-b[0],share_stuff-b[1]);
share_stuff-id=1;
return 0;
}
linux或unix环境下编译