`
muchunfeng
  • 浏览: 7668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如果没有线程,开源会怎样

阅读更多
    今天在处理zookeeper,通过阅读源代码,小有体会,将就着写下,望能起到抛砖引玉的效果。
    1 线程救了开源。
    试想一下,如果没有线程,几个开源项目能正常跑起来?

    2 基础是王道。
    开源代码目的就在帮助你简单,帮助你把一些细节的东西隐去。比如zookeeper中,你需要的只是如何创建一个zookeeper客户端,如何从zookeeper的服务器获取你所要的信息,而中间你可能还需要一些对服务器node的状态的api调用。而开源项目得为你做多少东西呢?而这些都是最基础的一些东西,也恰恰是我们现在变成用得比较少的东西。
    包括:
    文件操作,socket操作,同步处理,国际编码。

    3 linux哲学太了不起。
    每个项目都有输入流,都有输出流。所以spring能很好的整合struts,hibernate,ibatis。zookeeper也能很好的整合到任何项目,包括hadoop。

    4 设计模式。
    一直以为设计模式是很高的东西,当然,它确实也不是那么容易真正弄明白。以前听一朋友说设计模式就是为了更好的理解高手的代码,此言我觉得甚有道理。
分享到:
评论
2 楼 muchunfeng 2012-02-14  
2 以zookeeper为例
zookeeper的Client就是上述第一种情况的良好体现,而Server则是第二种情况的良好体现。
1 楼 muchunfeng 2012-02-14  
自己补充一些:
1 开源分两种类型:
一为zookeeper之类,在别人的程序中嵌入使用的,这种情况下一般会开新的线程,尤其是这种需要和服务端进行心跳连接的。当然也有好多不需要开心线程的,这类像Java中就有很多例子,ArrayList之类,就完全没有必要开新线程。
一为hadoop,tomcat之类,它有它自己的一套运行机制,我们所要作的只是看它为我们提供了哪些接口,然后通过实现这些接口去做一些我们愿意做的事情。

这两种方式的主导方完全不一样。

相关推荐

    java多线程实例 代码可执行 绝对开源

    Java多线程是Java编程中的核心概念,尤其在开发高性能、高并发的应用程序时不可或缺。在本实例中,我们探讨的焦点是如何利用Java的多线程特性来实现网络资源的高效下载并进行合并。 首先,Java多线程允许程序同时...

    完整开源的C#多线程下载工具

    完整开源的C#多线程下载工具,含源程序和可执行 DEMO,支持 Youtube 等视频网站视频的下载;优秀的插件机制,使得整个程序可扩展性极强。 架构清楚,代码整洁,不失为学习研究的好材料。 项目介绍主页:...

    免积分C++11写的可复用的线程池类 - 开源

    4. **同步机制**:线程池中可能会涉及到`std::mutex`、`std::condition_variable`等同步原语,用于保证线程安全,避免数据竞争。 5. **线程池接口设计**:学习如何设计线程池的API,如提交任务、等待所有任务完成、...

    Android 多线程图片下载开源代码

    在Android开发中,多线程图片下载是一个常见的需求,尤其在大数据量或者高并发的情况下,单线程下载图片会严重影响用户体验,因为这可能导致UI线程阻塞,使得应用显得卡顿。这篇博客“Android 多线程图片下载开源...

    一个多线程下载工具vc++开源代码

    **多线程下载工具VC++开源代码解析** 在软件开发领域,尤其是网络编程,多线程技术被广泛应用于提升程序的执行效率。本项目“一个多线程下载工具vc++开源代码”提供了一个实用的示例,帮助开发者深入理解如何利用...

    VC线程库源码

    本文将深入探讨基于VC++环境下的线程库源码,特别是从开源视频传输库JrtpLib中提取出来的线程封装库——GmdJThread。这一部分的源码提供了丰富的线程管理功能,对于理解和实践Windows系统下的多线程编程具有重要的...

    QT多线程实战源代码(QThread)

    1. **创建线程类**:继承自QThread类,重写run()函数,这个函数会在新创建的线程中执行。 2. **启动线程**:通过调用QThread的start()方法来启动线程,run()函数会被执行。 3. **线程同步**:QT提供了信号和槽机制,...

    开源的win32平台c++多线程开发包

    标题中的“开源的win32平台c++多线程开发包”指的是一个专门为Windows操作系统(win32 API)设计的C++编程库,它允许开发者使用C++语言进行多线程程序的开发。这个开发包的核心特性就是其开源性,意味着源代码对公众...

    大恒-双相机开发-C#-多线程-项目开源

    《大恒双相机开发-C#-多线程项目开源解析》 在当今信息化时代,高效、稳定的图像处理系统成为许多领域不可或缺的技术支持。本项目"大恒-双相机开发-C#-多线程"正是这样的一个实例,它利用C#语言进行编程,实现了对...

    Nachos设置线程id和限制线程数

    如果没有,它会继续创建新的线程并分配一个新的ID。`getThreadID()`返回已经分配给该线程的ID。 了解了这些之后,我们就能明白Nachos如何通过修改`thread.h`和`thread.cc`来控制线程的标识和数量。这种管理方式对于...

    多线程之间消息通信

    开发者可能会使用`CreateThread`或`_beginthreadex`函数来创建新线程,然后在线程函数中实现具体的业务逻辑。 线程间通信的其他方法还包括共享内存、管道、事件对象、信号量、互斥量等。这些同步机制可以用来控制对...

    鱼刺多线程模块

    "鱼刺多线程模块"是一个专为提升程序运行效率而设计的开源组件,它主要聚焦于多线程技术的应用。在计算机科学中,多线程是并发执行多个任务或子任务的一种方法,使得程序能够更高效地利用系统资源,特别是在多核...

    鱼刺多线程注册源码例子(鱼刺多线程稳定框架)

    在这个例子中,"鱼刺框架"可能是一个专门为多线程编程设计的开源或商业库,它提供了一系列工具和接口,帮助开发者更好地管理和协调多个并发执行的线程。 首先,我们需要理解多线程的基本概念。在计算机科学中,线程...

    Python编写的开源、多线程的网站爬虫

    Python编写的开源、多线程的网站爬虫: Python多线程爬虫是指使用Python编程语言中的多线程技术来实现网页爬取任务的并发执行。通常在进行网页爬取时,单线程的爬虫需要逐个请求并解析每个网页,由于网络延迟和IO等待...

    Threading Building Blocks 线程创建模块开源库

    在多核的平台上开发并行化的程序,必须合理地利用系统的资源 - 如与内核数目相匹配的线程,内存的合理访问次序,最大化重用缓存。有时候用户使用(系统)低级的应用接口创建、管理线程,很难保证是否程序处于最佳状态...

    线程 福建移动批量复核太慢,后来就改用线程,但是没有效果

    1. **同步问题**:多线程环境下,如果没有正确地同步共享资源,可能会导致数据竞争和死锁,从而降低性能甚至引发错误。 2. **线程池配置不当**:如果没有适当地配置线程池大小,比如设置得过大或过小,都可能导致...

    单线程与多线程

    但是,单线程程序在执行过程中如果遇到阻塞(如等待用户输入或网络I/O操作),会导致整个程序暂停,无法同时处理其他任务,这在需要并行处理任务的场景下效率较低。 相比之下,多线程允许一个程序有多个执行流,每...

    Nachos的线程报告

    如果发现有更高优先级的线程,当前运行的线程会被抢占并切换到高优先级的线程。这需要修改调度算法,增加优先级比较和抢占的逻辑。 3. **公共信箱通信机制**:为了实现线程间的通信,学生团队设计了一个公共信箱...

    vc_多线程下载多线程下载

    实现多线程下载时,可以参考开源库,如libcurl,它提供了多线程下载的支持。结合VC的MFC(Microsoft Foundation Classes)库,可以方便地构建用户界面和进行线程管理。 总之,VC中的多线程下载是一个涉及并发编程、...

    VB 远线程注入技术(开源代码) .doc

    VB 远线程注入技术

Global site tag (gtag.js) - Google Analytics