指针的好处

#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <string.h>
#include <stdlib.h>
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
struct parameter{
 char* fd;
 int hit;
};
void *threadd(void* data)
{
        struct parameter *p;
        p=(struct parameter*)data;
        int fd=p->fd;
        int hit=p->hit;
        printf ("thread : I‘m thread %d,%d\n",fd,hit);
         while(i<MAX){
              //  printf("thread%d : number = %d\n",threadNum,number);
                pthread_mutex_lock(&mut);
                printf("thread%d : number = %d,i = %d\n",fd,number,i);
                        number++;
                printf("thread%d : number = %d,i = %d\n",fd,number,i);
                i++;
                pthread_mutex_unlock(&mut);
               sleep(1);
       }
        printf("thread%d :主函数在等我完成任务吗?\n",fd);
        free(p);
        pthread_exit(NULL);
}
void thread_create(void)
{
        int temp;
        memset(&thread, 0, sizeof(thread));
        /*创建线程*/ 

 //struct parameter p;
        // p.fd=555;
        // p.hit=666

struct parameter*pptr=malloc(sizeof(struct parameter));

        pptr->fd="555";
        pptr->hit=666;
       if((temp = pthread_create(&thread[0], NULL, threadd, pptr)) != 0)//pthread_create函数和主进程不是按顺序执行,因此若用p而不是pptr为threadd传递参数
                                                                         //会导致thread_create函数(是自定义的函数,不是pthread_create函数)执行到大括号而结束,而此时pthread_create函数还没有执行完,而使得p中的值失效。
                printf("线程1创建失败!\n");
        else
                printf("线程1被创建\n");
        struct parameter*qptr=malloc(sizeof(struct parameter));
        qptr->fd="777";
        qptr->hit=888;
        if((temp = pthread_create(&thread[1], NULL, threadd, qptr)) != 0)
                printf("线程2创建失败");
        else
                printf("线程2被创建\n");
        // sleep(3);
}
void thread_wait(void)
{
        /*等待线程结束*/
        if(thread[0] !=0) {
                pthread_join(thread[0],NULL);
                printf("线程1已经结束\n");
        }
        if(thread[1] !=0) {
                pthread_join(thread[1],NULL);
                printf("线程2已经结束\n");
       }
}
int main()
{
        /*用默认属性初始化互斥锁*/
        pthread_mutex_init(&mut,NULL);
        printf("我是主函数哦,我正在创建线程,呵呵\n");
        thread_create();
        printf("我是主函数哦,我正在等待线程完成任务阿,呵呵\n");
        thread_wait();
        return 0;
}  
时间: 2024-08-08 13:49:51

指针的好处的相关文章

黑马程序员---C基础9【字符串的输入输出】【字符串相关函数】【指针】【指针变量初始】【二级指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [字符串的输入输出] 1.字符串输出: %s-------从给定的地址开始输出字符直到遇到\0停止: printf("%s\n",&a[3]);  printf("%s\n",a); char a[]="hellowo\0rd!"; 2.字符串输入: 从键盘上接收一个字符串,保存在以a为首地址的字符数组中 scanf("%s&

Delphi指针运用理解

现在是面向对象漫天飞的年代了,大家都在在谈面向对象编程.Java对指针“避而不谈”,C#虽然支持指针运用,但是也淡化处理. 然而,指针还是好完全掌握为妙,省得在开发过程碰钉子,至于对指针的运用在于开发人员的存乎于心,运用得当.指针运用的不好,不要怪开发语言及其机制.下面谈到的是在Delphi中指针的运用,至于其他语言,指针的思想是相通的. 指针是一种数据类型,和编程语言中其它的类型一样,是一种类型的区分,比如 Integer 是带符号的整型,在32位X86机中,是用4个字节表示,而指针也是用4个

指针的使用

指针的语法 声明一个指针变量的语法: <type>  *<ptr_name>; 注:该语法不仅仅指出一个变量为指针,同时表明指针所指向的内存的类型. 指针的指向:变量的地址 指针既可以直接指向新分配的内存,也可以指向一个已经存在的变量. 为了获得变量地址(即变量在内存中的位置),要把符号&放在变量名前.&称为取地址操作符,因为它能返回变量的内存地址: int x; int *p_x = &x; *p_x = 2; cout << x <&l

再论函数指针、函数指针数组

一.基本概念 数组名:本质是指向数组第一个元素的常量指针,即数组首地址 函数名:本质是指向函数第一条指令的常量指针,即函数首地址 函数指针:保存了函数首地址,可以看做函数的别名 二.函数指针的声明方法 type (*func)(type &, type &) 1.该语句声明了一个指针func,它指向了一个函数: 2.该函数带有2个type型参数,并返回一个type型的值: p.s. tpye类型可以看做int或者float等C++类型 3.可以把整个函数看做一个数据类型 tpye func

深入理解C语言中的指针与数组之指针篇(转载)

前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情,一直没有时间静下心来写这些东西,毕竟这确实是一件非常耗费时间和精力的事情:一方面,个人对C语言的掌握和理解也还有限,怕写出来的东西会对大家造成误导.当然,今天写的这些东西也肯定存在各种问题,不严谨甚至错误的地方肯定有,也希望大家来共同探讨,相互改进. 我会慢慢的写完这几章,有想法的童鞋可以和我探讨

c语言函数指针的理解与使用

转载:http://www.cnblogs.com/haore147/p/3647262.html 1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun2(char * p1,char * p2); C) char * fun3(char * p1,char * p2); 看看上面三个表达式分别是什么意思? C)这很容易,fun3是函数名,p1,p2

为什么说指针是 C 语言的精髓?

简单来说,因为C就那点破feature,如果你把指针干掉,那这语言就完了.相反,如果你干掉struct,干掉union,干 掉数组,甚至你把if-while都干掉,留下malloc和goto,则最多就是程序难写一点而已. 所以这就是为什么C语言的精髓是指针了,因为他只有指针可以用了. 把struct和数组都砍掉之后 只能用char*让后到处指针运算和强制转换了,因为没有了内存布局 没if怎么goto 把两个continuation的函数指针装进数组里面,算出个true和false,用下标拿出来,

【转】 C++易混知识点2. 函数指针和指针函数的区别

我们时常在C++开发中用到指针,指针的好处是开销很小,可以很方便的用来实现想要的功能,当然,这里也要涉及到指针的一些基本概念.指针不是基本数据类型,我们可以理解他为一种特殊类型的对象,他占据一定空间,但是所带来的好处就是C++如此强大的深层次原因了. 转载请注明出处: http://blog.csdn.net/elfprincexu 1. 指针函数, ( __type__ * func( void, int,) ) 顾名思义,他是一个函数,只不过和一般函数区分的原因是它返回的是一个指针.int*

Python中的指针:有什么意义?

如果您曾经使用过C或C ++等低级语言,那么您可能已经听说过指针.指针允许您在部分代码中创建高效率.它们也会给初学者带来困惑,并且可能导致各种内存管理错误,即使对于专家也是如此.那么它们在Python中的位置,以及如何在Python中模拟指针? 为什么Python没有指针? 事实是我不知道.Python中的指针本身可以存在吗?可能,但指针似乎违背了Python的禅宗.指针鼓励隐含的变化而不是明确的变化.通常,它们很复杂而不是简单,特别是对于初学者.更糟糕的是,他们乞求用脚射击自己的方法,或做一些