`
ai_longyu
  • 浏览: 505975 次
社区版块
存档分类
最新评论

多进程和多线程编程

 
阅读更多

1、多进程编程

  1. #include<stdlib.h>
  2. #include<sys/types.h>
  3. #include<unistd.h>
  4. intmain()
  5. {
  6. pid_tchild_pid;
  7. /*创建一个子进程*/
  8. child_pid=fork();
  9. if(child_pid==0)
  10. {
  11. printf("childpid\n");
  12. exit(0);
  13. }
  14. else
  15. {
  16. printf("fatherpid\n");
  17. sleep(60);
  18. }
  19. return0;
  20. }


2、多线程编程

  1. #include<stdio.h>
  2. #include<pthread.h>
  3. structchar_print_params
  4. {
  5. charcharacter;
  6. intcount;
  7. };
  8. void*char_print(void*parameters)
  9. {
  10. structchar_print_params*p=(structchar_print_params*)parameters;
  11. inti;
  12. for(i=0;i<p->count;i++)
  13. {
  14. fputc(p->character,stderr);
  15. }
  16. returnNULL;
  17. }
  18. intmain()
  19. {
  20. pthread_tthread1_id;
  21. pthread_tthread2_id;
  22. structchar_print_paramsthread1_args;
  23. structchar_print_paramsthread2_args;
  24. thread1_args.character='x';
  25. thread1_args.count=3000;
  26. pthread_create(&thread1_id,NULL,&char_print,&thread1_args);
  27. thread2_args.character='o';
  28. thread2_args.count=2000;
  29. pthread_create(&thread2_id,NULL,&char_print,&thread2_args);
  30. pthread_join(thread1_id,NULL);
  31. pthread_join(thread2_id,NULL);
  32. return0;
  33. }


3、线程同步与互斥

1)、互斥

  1. pthread_mutex_tmutex;
  2. pthread_mutex_init(&mutex,NULL);
  3. /*也可以用下面的方式初始化*/
  4. pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER;
  5. pthread_mutex_lock(&mutex);
  6. /*互斥*/
  7. thread_flag=value;
  8. pthread_mutex_unlock(&mutex);


2)、条件变量

  1. intthread_flag=0;
  2. pthread_mutex_tmutex;
  3. pthread_cond_tthread_flag_cv;\
  4. voidinit_flag()
  5. {
  6. pthread_mutex_init(&mutex,NULL);
  7. pthread_cond_init(&thread_flag_cv,NULL);
  8. thread_flag=0;
  9. }
  10. void*thread_function(void*thread_flag)
  11. {
  12. while(1)
  13. {
  14. pthread_mutex_lock(&mutex);
  15. while(thread_flag!=0)
  16. {
  17. pthread_cond_wait(&thread_flag_cv,&mutex);
  18. }
  19. pthread_mutex_unlock(&mutex);
  20. do_work();
  21. }
  22. returnNULL;
  23. }
  24. voidset_thread_flag(intflag_value)
  25. {
  26. pthread_mutex_lock(&mutex);
  27. thread_flag=flag_value;
  28. pthread_cond_signal(&thread_flag_cv);
  29. pthread_mutex_unlock(&mutex);
  30. }

分享到:
评论

相关推荐

    c语言多进程多线程编程

    C语言作为一门底层且强大的编程语言,提供了丰富的系统调用接口来实现多进程和多线程编程。 **多进程(Multiprocessing)** 1. **进程定义**:进程是程序的一次执行实例,每个进程都有自己的独立内存空间,包括...

    linux 多进程多线程编程

    Linux 多进程多线程编程是指在 Linux 操作系统下使用 C 语言进行多进程和多线程编程的技术。该技术可以大幅度提高程序的执行效率和响应速度,提高系统的并发能力和资源利用率。 1. 创建缺省线程 在 Linux 系统下,...

    c语言多进程多线程编程.doc

    在计算机编程领域,C语言是一种强大的工具,尤其在实现多进程和多线程编程时。多进程和多线程是操作系统中并行处理任务的关键机制,它们允许程序充分利用计算机的硬件资源,提高效率和响应速度。本文将深入探讨C语言...

    操作系统,多线程编程,多进程编程,java

    在操作系统中,多线程编程和多进程编程是并发执行任务的重要手段,特别是在Java这样的高级编程语言中,它们的应用尤为广泛。 首先,我们要理解“多线程”这一概念。线程是操作系统中的一个基本执行单元,每个线程都...

    linux下多进程、多线程编程

    在深入探讨Linux下的多进程和多线程编程之前,我们先来了解一下Linux进程的基本结构。在Linux环境中,每一个进程都拥有独立的地址空间,这个地址空间可以被划分为几个主要的部分:**数据段**、**堆栈段**和**代码段*...

    Linux多线程 C语言编程关于多线程

    本文介绍了在Linux环境下进行多进程和多线程编程的基础知识。多进程编程主要涉及fork()函数的使用,而多线程编程则基于pthread线程库。通过理解这些基础知识,开发人员能够更好地利用现代操作系统提供的并发能力,...

    linux上实现多进程和多线程实现同步互斥(源代码)

    总结,Linux上的多进程和多线程编程涉及复杂的同步互斥操作,开发者需要理解各种同步机制,根据具体需求选择合适的方法。通过阅读和学习提供的源代码,可以加深对这些概念的理解,提升实际开发能力。

    C和C++VC多进程线程调用编程

    本文将深入探讨如何在C和C++中实现多进程和多线程编程,以及VC(Visual C++)环境下的一些特定方法。 首先,我们来看C语言中的 `_execl` 函数家族。这一系列函数(如 `_execl`, `_wexecl`, `_execv`, `_wexecv`, `_...

    Linux下的多进程编程初步

    ### Linux下的多进程编程初步 #### 摘要 多线程程序设计的概念自六十年代初被提出以来,直到八...掌握这些基础知识对于深入学习更复杂的多进程和多线程编程技术至关重要。未来章节将进一步探讨进程间通信等相关主题。

    Python-多进程与多线程.pdf

    ### Python多进程与多线程知识点详解 #### 一、多进程 ##### 1.... 在Python中,`multiprocessing`模块提供了...以上是关于Python多进程和多线程编程的核心知识点,理解和掌握这些知识点对于编写并发程序是非常重要的。

    c语言__多进程和多线程.doc

    多进程编程和多线程编程都是实现并发编程的方式,但它们有不同的特点和应用场景。多进程编程适合于需要独立的资源和地址空间的应用场景,而多线程编程适合于需要共享资源和地址空间的应用场景。

    VC++多线程与多进程编程

    多线程编程的挑战包括线程同步和通信。VC++提供了多种机制来解决这些问题,如临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)以及事件对象(Event)。这些同步原语帮助开发者确保共享资源的安全...

    有关vc的多进程线程.rar_Windows多进程_多进程_多进程 windows

    另一方面,"www.pudn.com.txt"这个文件可能是来源于网络论坛pudn.com的资源链接或者相关讨论,可能包含了更多关于VC++多进程多线程的实例代码、技巧或者常见问题解答,有助于深入理解和实践。 在学习和应用这些知识...

    UNIX Linux实验教程 6实验六Windows2000多进程和多线程机制.doc

    在进行多进程和多线程编程时,必须考虑错误处理,确保程序在遇到异常情况时能够优雅地退出,避免数据损坏或系统崩溃。 通过这个实验,学生将有机会实践这些概念,加深对Windows 2000进程和线程管理的理解,从而在...

    c语言多进程多线程编程.pdf

    ### C语言多进程多线程编程相关知识点 #### 进程与线程的基本概念 - **进程**: 进程是一个程序在计算机上的一次执行活动。它是系统进行资源分配和调度的基本单位,拥有独立的地址空间和其他资源。进程之间相互独立...

Global site tag (gtag.js) - Google Analytics