精华内容
下载资源
问答
  • cloud-dev:云研发,是一...它可以让业务人员,开发人员,运营人员等在同一个云端共同协作,透明化地完成整个软件的生命周期(需求,设计,编码,合并,部署,运营),而非相互隔离,又或者是多个多个软件才能完成工作
  • 刚解决了之前的那个Linux下Pthread库的问题,这次就来使用两个线程来协作共同完成一个求和的任务。 打一下基础吧 本次需要使用到的知识点有: lpthread,编译的时候用到,相当于一个声明的效果 pthread_...

    刚解决了之前的那个Linux下Pthread库的问题,这次就来使用两个线程来协作,共同完成一个求和的任务。


    打一下基础吧


    本次需要使用到的知识点有:

    • lpthread,编译的时候用到,相当于一个声明的效果
    • pthread_mutex_t 作为一个锁对象而存在
    • pthread_create,创建一个新线程的函数调用
    • pthread_t ,线程的类型

    代码展示


    #include <stdio.h>
    #include <stdlib.h>
    //多线程库的引用
    #include<pthread.h>
    
    //分别用于记录总和和线程的数目
    int sum  ,count;
    //用于对线程的入口函数进行加锁操作的变量
    pthread_mutex_t lockid;
    //线程的入口函数
    void* runner(void *param);
    
    int main( int argc, char*argv[])
    {
        //声明两个线程
        pthread_t tid , tid2;
        pthread_attr_t attr;
    
        if(argc != 2){
            fprintf(stderr,"usage : a.out<integer value>\n");
            return -1;
        }
    
        if(atoi(argv[1])<0){
            fprintf(stderr,"%d must be >= 0 \n",atoi(argv[1]));
            return -1;
        }
    
        pthread_attr_init(&attr);
        //创建两个线程
        pthread_create(&tid,&attr,runner,argv[1]);
        pthread_create(&tid2,&attr,runner,argv[1]);
        //等待两个线程的结束。才唤醒主函数
        pthread_join(tid,NULL);
        pthread_join(tid2,NULL);
    
        //输出最后的总的计算的结果
        printf("Sum = :%d\n",sum);
    }
    
    void* runner(void *param){
        int i , upper = atoi(param);
        pthread_mutex_lock(&lockid);
        count += 1;
        printf("正在执行第%d个线程的求和运算:\n",count);
        if(count == 1){
            for(i = 1; i < upper/2 ; i++){
                sum += i ;
            }
        }else if(count ==2 ){
            for(i = upper/2; i < upper ; i++){
                sum += i ;
            }
        }else{
            printf("对不起,目前只支持两个线程了!\n");
        }
        printf("第%d个线程的运算结果是:%d\t\n",count,sum);
        pthread_mutex_unlock(&lockid);
        pthread_exit(0);
    }
    

    程序运行结果


    mark@mark-pc:~/Code/C/PThreadTest$ gcc  main.c  -lpthread  -o Main
    mark@mark-pc:~/Code/C/PThreadTest$ ./Main 100
    
    正在执行第1个线程的求和运算:
    第1个线程的运算结果是:1225    
    正在执行第2个线程的求和运算:
    第2个线程的运算结果是:4950    
    
    Sum = :4950

    细节分析


    下面我来说一说此段代码的核心。
    首先,是创建线程之前做的一些“异常”处理,不是最重要的,但是也不可缺少。就是对参数的判断罢了。

    然后,是创建线程的四个参数的具体的含义。分别是引用的线程的id,属性的引用,线程的入口函数的名称,以及要传进线程的方法的参数。
    注意这里是引用类型的线程id。找出就在于可以把创建线程的结果返回给线程id。这样就完成了对其的修改。

    最后,在线程的入口函数里面,我对相关项进行了处理。包括判断线程,加锁,解锁等操作。当这两个线程都执行完成的时候,唤醒主函数(可以认为是“进程”)。完成最后的输出任务!


    总结


    额,我这里完成的多线程的交互,并不是最标准的,甚至可以认为是“挫”。但是主要的思想还是比较的正统的。实际的开发中,需要很多方面的配合才能更好的作出多线程的协作或者交互任务。
    毕竟是刚接触这方面的知识,代码中不可避免的会存在一些问题。欢迎博友们批评指正,希望能和你们共同进步!

    展开全文
  • 刚解决了之前的那个Linux下Pthread库的问题,这次就来使用两个线程来协作共同完成一个求和的任务。打一下基础吧本次需要使用到的知识点有:lpthread,编译的时候用到,相当于一个声明的效果pthread_mutex_t 作为一...

    刚解决了之前的那个Linux下Pthread库的问题,这次就来使用两个线程来协作,共同完成一个求和的任务。

    打一下基础吧

    本次需要使用到的知识点有:

    lpthread,编译的时候用到,相当于一个声明的效果

    pthread_mutex_t 作为一个锁对象而存在

    pthread_create,创建一个新线程的函数调用

    pthread_t ,线程的类型

    代码展示

    #include

    #include

    //多线程库的引用

    #include

    //分别用于记录总和和线程的数目

    int sum ,count;

    //用于对线程的入口函数进行加锁操作的变量

    pthread_mutex_t lockid;

    //线程的入口函数

    void* runner(void *param);

    int main( int argc, char*argv[])

    {

    //声明两个线程

    pthread_t tid , tid2;

    pthread_attr_t attr;

    if(argc != 2){

    fprintf(stderr,"usage : a.out\n");

    return -1;

    }

    if(atoi(argv[1])<0){

    fprintf(stderr,"%d must be >= 0 \n",atoi(argv[1]));

    return -1;

    }

    pthread_attr_init(&attr);

    //创建两个线程

    pthread_create(&tid,&attr,runner,argv[1]);

    pthread_create(&tid2,&attr,runner,argv[1]);

    //等待两个线程的结束。才唤醒主函数

    pthread_join(tid,NULL);

    pthread_join(tid2,NULL);

    //输出最后的总的计算的结果

    printf("Sum = :%d\n",sum);

    }

    void* runner(void *param){

    int i , upper = atoi(param);

    pthread_mutex_lock(&lockid);

    count += 1;

    printf("正在执行第%d个线程的求和运算:\n",count);

    if(count == 1){

    for(i = 1; i < upper/2 ; i++){

    sum += i ;

    }

    }else if(count ==2 ){

    for(i = upper/2; i < upper ; i++){

    sum += i ;

    }

    }else{

    printf("对不起,目前只支持两个线程了!\n");

    }

    printf("第%d个线程的运算结果是:%d\t\n",count,sum);

    pthread_mutex_unlock(&lockid);

    pthread_exit(0);

    }

    程序运行结果

    mark@mark-pc:~/Code/C/PThreadTest$ gcc main.c -lpthread -o Main

    mark@mark-pc:~/Code/C/PThreadTest$ ./Main 100

    正在执行第1个线程的求和运算:

    第1个线程的运算结果是:1225

    正在执行第2个线程的求和运算:

    第2个线程的运算结果是:4950

    Sum = :4950

    细节分析

    下面我来说一说此段代码的核心。

    首先,是创建线程之前做的一些“异常”处理,不是最重要的,但是也不可缺少。就是对参数的判断罢了。

    然后,是创建线程的四个参数的具体的含义。分别是引用的线程的id,属性的引用,线程的入口函数的名称,以及要传进线程的方法的参数。

    注意这里是引用类型的线程id。找出就在于可以把创建线程的结果返回给线程id。这样就完成了对其的修改。

    最后,在线程的入口函数里面,我对相关项进行了处理。包括判断线程,加锁,解锁等操作。当这两个线程都执行完成的时候,唤醒主函数(可以认为是“进程”)。完成最后的输出任务!

    总结

    额,我这里完成的多线程的交互,并不是最标准的,甚至可以认为是“挫”。但是主要的思想还是比较的正统的。实际的开发中,需要很多方面的配合才能更好的作出多线程的协作或者交互任务。

    毕竟是刚接触这方面的知识,代码中不可避免的会存在一些问题。欢迎博友们批评指正,希望能和你们共同进步!

    展开全文
  • 不晓得大家有没有使用过文档协作编辑平台,这是一个可以实现多人同时在线编辑的一个工具,当我们在工作中有文档需要几个人共同完成的时候,用文档协作编辑平台,可以快速的完成文档的编辑。文档协作编辑平台有哪些呢...

    不晓得大家有没有使用过文档协作编辑平台,这是一个可以实现多人同时在线编辑的一个工具,当我们在工作中有文档需要几个人共同完成的时候,用文档协作编辑平台,可以快速的完成文档的编辑。文档协作编辑平台有哪些呢?下面介绍一些比较好用的给大家:

    368a8ae18828d3091b648952e96ce931.png


    永中优云:永中优云是永中office开发的一款办公软件,基于永中office在office开发中积累的经验,永中优云在文档的编辑等方面也是优势很明显的。在优云这个平台中,你可以新建文档、编辑文档,可以和同事一起对文档进行编辑,当然也可以设置文档的编辑、查看等权限的。在编辑的过程中如果遇到了什么问题或者是有什么建议的话,可以通过优云中的聊天功能进行沟通解决的,整体下来还是非常方便的。


    在使用了这个平台之后,可以实现随时随地办公的,因为资料都存放在平台中,无论你是在家、出差在外还是在哪里,只要有网络,就可以实现文档的在线编辑处理,非常的方便的。推荐大家可以试用下永中优云:http://www.yozocloud.cn/


    此外,文档协作编辑平台还有很多的,如wps、腾讯等也都是有这样的在线编辑平台的,不过每家平台的优势都是不一样的,大家可以根据自己的需求选择相应的协作编辑平台。

    展开全文
  • 网页与网页资源的缓存是浏览器与服务器端共同协作完成的。主要参与者 Cache-Control、Etag、LastModified三者。 Cache-Control Cache-Control扮演着缓存最主要的角色,Etag与LastModified是协商缓存的主要角色。 ...

    前言

    网页与网页资源的缓存是浏览器与服务器端共同协作完成的。主要参与者 Cache-Control、Etag、LastModified三者。

    Cache-Control

    Cache-Control扮演着缓存最主要的角色,Etag与LastModified是协商缓存的主要角色。

    取值为no-store

    当相应头中有Cache-Control no-store的时候。浏览器不会使用任何缓存,也不会有任何协商缓存参与(etag与LastModified).

    取值为no-cache

    Cache-Control为no-cache的时候会先去进行协商缓存即通过etag或者LastMdoified进行验证本地的缓存是否有效。当服务端验证后告诉浏览器你那边的缓存可以用(即返回304)或者不可以(返回200状态并返回对应的内容)。注意Cache-Control为maxage=0时与no-cache效果相同

    取值为must-revalidate

    Cache-Control为must-revalidate时,会在使用缓存前进行缓存验证,验证方式与no-cache有所不同。no-cache永远都会使用协商缓存。但是must-revalidate会由浏览器自身新鲜度检测策略来定。对于html文件来说会一直使用协商缓存,但是对于js,css,img对象就不一样,如果在短时间内再次访问该资源一般会从memory-cache或者diskcache中获取,有时候又会通过协商缓存。

    取值为max-age > 0s 单位秒

    Cache-Control为max-age > 0 。所有资源都会缓存到指定秒数之前,在缓存期间原则上永远也不会访问服务器。注意我加了一个“原则上”是因为我在用Chrome测试时遇到了这个请。当我刷新时,对应url地址的html文件会使用协商缓存,但是当我在一个空标签输入这个url地址点击回车时,这个html文件会是disk-cache。

    Etag

    Etag时通过为文件计算一个指纹值,返回给浏览器,浏览器记住这个指纹。当使用浏览器进行缓存验证是,会发送请求头 If-None-Match=指纹(If-None-Match顾名思义如果指纹不匹配你就给我返回新的数据),服务端发现请求头中存在If-None-Match就会去匹配新的指纹,如果相等则范围304否则范围200和数据内容

    LastModified

    LastModifed顾名思义是通过文件的最后修改时间来校验缓存。浏览器进行缓存校验是,会发送请求头
    If-Modified-Since=最后修改时间(顾名思义如果文件的修改时间大于了我发送给你的时间,你服务器就必须返回新数据给我),服务器发现请求头中存在If-Modified-Since则会去使用修改时间器对比发现在给定时间之后修改我就返回新数据给浏览器否则返回304。

    据我猜测如果同时存在If-Modified-Since和If-None-Match头浏览器应该优先使用If-None-Match。

    展开全文
  • 刚解决了之前的那个Linux下Pthread库的问题,这次就来使用两个线程来协作共同完成一个求和的任务。打一下基础吧本次需要使用到的知识点有:lpthread,编译的时候用到,相当于一个声明的效果pthread_mutex_t 作为一...
  • 企业中的流程通常是由多个角色、多个部门甚至多个合作伙伴协作完成的。过去这样的流程梳理通常是由各个部门相关人员聚在一起开会讨论来确定的,之后再整理并将梳理好的流程图发布出来。 每一次版本的变更都需要...
  • 协作平台

    2016-05-16 00:19:00
    协作平台的出现是为了实现共同的目标,充分友情的利用组织资源,依靠团队共同的力量共同完成某一件任务。协作可以集中力量在短时间内完成个人难以完成的任务,当我们协同创作时,创意在群体成员间浮现;创意火花飞舞...
  • 协作

    千次阅读 2017-06-17 15:36:28
    协作图是表现对象协作关系的图,它展现了多个对象在协同工作达成共同目标的过程中互相通信的情况,通过对象和对象之间的链、发送的消息来显示参与交互的对象。 协作图中的元素主要有对象、消息和链三种。对象和链...
  • 关于协作平台

    2016-05-16 07:33:00
    协作平台是进行团队开发、协作的系统,一般是基于...协作的优点是可以充分有效地利用组织资源,扩大企业经营空间范围,缩短产品的生产时间,便于集中力量在短时间内完成个人难以完成的任务。 为了实现共同的目标...
  • Git 多人协作开发

    2020-03-03 21:23:59
    如果有多个开发人员共同开发一个项目,如何进行协作的呢。 Git提供了一个非常好的解决方案 ---- 多人协作开发。 1.多人协作原理 典型的做法是,首先创建一个git服务器,被多个人所操作。   1.多人协助实现...
  • git 多人协作开发

    2020-08-04 20:01:35
    Git 多人协作开发的过程 </h1>...如果有多个开发人员共同开发一个项目,如何进行协作的呢。 Git提供了一个非常好的解决方案 ---- 多人协作开发。 1.多人协作原理 典型的做法是,首先创建一个g...
  • 线程间的协作指的是多个线程在共同完成某项任务时,需要线程之间互相通信,协调共同完成,最经典的例子就是生产者-消费者模型(网上烂大街的例子...)。所谓生产者消费者模型是指:有个共同的数据结构(比如阻塞队列)...
  • Git多人协作开发

    2017-09-11 14:33:55
    如果有多个开发人员共同开发一个项目,如何进行协作的呢。 Git提供了一个非常好的解决方案 ---- 多人协作开发。 1.多人协作原理 典型的做法是,首先创建一个git服务器,被多个人所操作。   1.多人协助实现...
  • 线程协作,线程池

    2020-11-06 19:15:12
    多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据。...
  • 在这次采访中,JAXenter向Leonardo的创建者和作者Swing Hacks的共同作者Josh Marinacci讲了一个达到1.0状态的项目……。 JAXenter:什么是Leonardo Sketch,它的独特之处是什么? Josh Marinacci: Leonardo是...
  • Git 多人协作开发的过程

    万次阅读 多人点赞 2018-06-01 13:11:12
    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 ...如果有多个开发人员共同开发一个项目,如何进行协作的呢。 Git提供了一个非常好的解决方案----多人协作开发。 1.多人协作原理 典型的做法是,...
  • 基于网络的课堂协作学习是指在课堂教学中,借助Intemet、Intranet及多媒体等技术,在教师的指导下,由多个学习者组成合作小组,共同完成某一学习任务。在此过程中,学习者借助一定的网络交互平台,分工协作,...
  • 面向对象编程--协作

    2019-05-05 17:39:39
    抽象对象之间的协作,这两种⽅法,⼀般是同时运⽤的,共同完成协作的抽象 从小到大,将对象的小职责聚合形成大职责; 从大到小,将大职责分配给各个小对象。 可以协作对象 该对象⾃身 任何以参数形式传⼊...
  • git的使用-协作

    2020-03-17 18:35:45
    多个人共同完成一个项目,非常容易起冲突,熟练使用git各种功能可以有效避免冲突,也能进一步提高工作效率。 下面我们就来看一下git如何实现多人协作。 1 多用户 1.1Josh 现在假设来了一个新同事 Josh ,共同...
  • 标签: android 自定义view activity开发中虽然我们调用Activity的setContentView(R.layout.activity_main)方法显示View视图,但是view的显示并不是由...四者之间关系复杂,共同协作完成视图的显示以及与用户交互
  • 是多条线程同时执行,他们相互抢夺cpu的控制权,谁先抢夺到谁先执行,这样的并行机制带有随机性,也就是说,多条线程并发时,谁先谁后是不确定的,但是有时候,我们希望多条线程之间能够共同协作完成一个任务,...
  • 团队协作OA解决方案

    2019-11-06 13:59:52
    团队协作对于企业成功所起的作用日益显著,公司的不断发展壮大,员工文化素质的不断提高,日常工作内容中需要智力成分的进一步增加,公司里越来越多的工作需要通过团队合作来共同完成。 团队是由员工和管理层组成的...
  • 为了实现共同的目标,充分友情的利用组织资源,依靠团队共同的力量共同完成某一件任务。 虽然协作并不是局限在使用敏捷方法团队的中,但与控制命令型企业文化相比,敏捷开发实践可以通过培养交流的企业文化帮助企业...
  • 如果有多个开发人员共同开发一个项目,如何进行协作的呢。 Git提供了一个非常好的解决方案 ---- 多人协作开发。 一、Git开发提交流程 1.git clone 复制文件的url, 把远程代码拉到本地进行代码开发 2.git status...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,062
精华内容 424
关键字:

共同协作完成