并发编程下多线程多进程的应用场景

问题描述

并发编程下多线程多进程的应用场景

实现高并发程序时,多线程编程,或者多进程编程它们各自的优势是什么,即它们的应用场景,

解决方案

多线程程序可以更有效利用cpu等资源,但是线程共享相同的内存地址,所以必须严格考虑同步和数据访问的共享问题。多进程可以任意部署到单个计算机甚至多个计算机,可获得更好的伸缩性。

解决方案二:

多线程or多进程。
这主要取决于你的应用场景。

你的应用场景是否支持你使用多进程的方式。比如你的应用是需要从一个消息队列里面取出消息来快速处理,并且这些消息之间还是有相应的联系,
那么多进程你恐怕就不合适了。这时候多线程可能就是你唯一的选择。

多进程可以用在一些无事务的交易类系统,更加的偏C,比如交易中间件的代表tuxedo中间件,则是使用的多进程处理模式。

多线程同样也是代表作,例如j2ee的应用,例如weblogic,jboss等,都是多线程的代表。

程序的运行速度,最重要的是看你的编码能力和设计能力,以及你自己的特长所在。加油吧!

解决方案三:

异步 的情况下,跑些线程执行你其他的业务逻辑。

解决方案四:

IO复用、多进程和多线程三种并发编程模型
python 并发编程(多进程、多线程、gevent)

解决方案五:

多线程在一个进程空间 访问共享变量更快 性能更好但是没多进程稳定 一个线程异常会导致整个进程退出 而多进程更健壮 每个进程都能占用足够对我地址空间

解决方案六:

没看懂题目什么意思,我还是回去安心看书了,,

时间: 2024-10-24 23:21:27

并发编程下多线程多进程的应用场景的相关文章

第一届淘宝并发编程比赛-多线程排序性能优化

去年一粟在淘宝内部组织了第一届淘宝并发编程比赛. 具体比赛问题请移步这里:https://github.com/Skinney/WordSorter 查看. 里面已经有可运行的代码,在一粟的机器上(RMBP 2012: 2.7 GHz Intel Core i7)运行速度如下: 1 16:07:49 hugo-rmbp ~/Projects/hugozhu/WordSorter/Go $ go run main.go  128 sowpods.txt out.txt 2 WordSort fin

《Java并发编程的艺术》第一章

作者:方腾飞  本文是样章  购买本书=>  当当 京东 天猫 互动 第1章并发编程的挑战 并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程,就能让程序最大限度的并发执行.在进行并发编程时,如果希望通过多线程执行任务让程序运行的更快,会面临非常多的挑战,比如上下文切换的问题,死锁的问题,以及受限于硬件和软件的资源限制问题,本章会介绍几种并发编程的挑战,以及解决方案. 1.1     上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制

《Java并发编程的艺术》一一1.1 上下文切换

1.1 上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制.时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms). CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务.但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态.所以任务从保存到再加载的过程就是一次上下文切换. 这就像我们同时

Java并发编程之创建线程_java

先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程.下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 一.Java中关于应用程序和进程相关的概念 在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认为java.exe或者javaw.exe(windows下可以通过任务管理器查看).Java采用的是单线程编程模型,即在我们自己的程序中如果没有主动创

Java并发编程中使用Executors类创建和管理线程的用法_java

1. 类 ExecutorsExecutors类可以看做一个"工具类".援引JDK1.6 API中的介绍:   此包中所定义的 Executor.ExecutorService.ScheduledExecutorService.ThreadFactory 和 Callable 类的工厂和实用方法.此类支持以下各种方法: (1)创建并返回设置有常用配置字符串的 ExecutorService 的方法. (2)创建并返回设置有常用配置字符串的 ScheduledExecutorServic

多线程之:并发编程面临的挑战

一:并发编程面临的挑战 (1)上下文切换问题 (2)死锁问题 (3)受限于硬件和软件资源的问题 &&注意点:并发编程的累加操作不超过百万次,多线程的执行速度要比单线程慢.因为线程有创建和上下文切换的开销. 二:如何减少上下文切换? (1)无锁并发编程. --->多线程竞争锁时,会引起上下文切换,所以多线程处理数据时候,可以用一些办法避免使用锁. --->如将数据id按照hash算法取摸分段,不同线程处理不同段的数据. (2)CAS算法 --->java的Atomic包使用

python并发编程之多进程、多线程、异步和协程详解_python

最近学习python并发,于是对多进程.多线程.异步和协程做了个总结.一.多线程 多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行.即使是单CPU的计算机,也可以通过不停地在不同线程的指令间切换,从而造成多线程同时运行的效果. 多线程相当于一个并发(concunrrency)系统.并发系统一般同时执行多个任务.如果多个任务可以共享资源,特别是同时写入某个变量的时候,就需要解决同步的问题,比如多线程火车售票系统:两个指令,一个指令检查票是否卖完,

浅谈Linux环境下并发编程中C语言fork()函数的使用_C 语言

由fork创建的新进程被称为子进程(child process).fork函数被调用一次,但返回两次.子进程的返回值是0,而父进程的返回值则是新进程的进程ID.将子进程ID返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得其所有子进程的进程ID.fork使子进程得到返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getpid以获得其父进程的进程ID. 使fork失败的两个主要原因是:系统中已经有了太多的进程,或者该实际用户ID的进程总数超过

Linux下多线程编程(C语言)

Linux下多线程编程(C语言) 2.6内核开始使用NPTL(Native POSIX Thread Library)线程库,这个线程库有以下几个目标: POSIX兼容,都处理结果和应用,底启动开销,低链接开销,与Linux Thread应用的二进制兼容,软硬件的可扩展能力,与C++集成等. 这里的线程是指用户空间的线程操作 一.线程相关操作 1.1  pthread_t      pthread_t 在头文件  /usr/include/i386-linux-gnu/bits/pthreadt