Comments (48)
@ybbetter 你好~感谢关注workflow~
因为每个人的使用场景不同,源码阅读建议从自己需要的场景入手比较好,以下是一些小建议:
- 了解源码中基本调用接口:tutorial是根据概念由浅入深的顺序编排的,先根据主页把tutorial试一下,对应的文档也可以先看完,然后看其他主题的文档,了解基本接口;
- 了解任务和工厂的关系:找到你平时最常用的一个场景(如果没有的话,可以从最常用的
Http
协议或其他网络协议入手,看看源码中factory和task的关系; - 根据一个任务的生命周期看基本层次:gdb跟着这个场景看看整体调用流程经过那些层次,具体感兴趣的部分可以单独拿出来细读源码;
- 理解异步资源的并列关系:workflow内部多种异步资源是并列的,包括:
网络
、CPU
、磁盘
、计时器
和计数器
,可以了解下他们在源码中互相是什么关系; - 底层具体资源的调度和复用实现:对epoll的封装或者多维队列去实现线程任务的调度,底层都有非常精巧的设计,这些可以在了解workflow整体架构之后深入细看。
祝你能够获得更多的思路启发,有任何建设性的提议也欢迎随时与我们交流~
from workflow.
- 请问 workflow 和 k8s 什么关系的,一般组合使用的时候是怎样的搭配?
- workflow可以完全通过自己组合实现nginx的所有功能吗?
- 感觉workflow的设计逻辑很直观朴素,没有复杂新名词新概念,workflow 如何应用于 分布式、机器学习部署等应用场景呢?因为看到readme里说可以用于神经网络?
1. workflow与k8s的关系
- workflow是介于业务代码和操作系统之间的单机框架,为开发者提供异步调度和任务型的编程范式;
- k8s是介于pod和集群之间的多机系统,为开发者管理容器的部署、扩展和资源共享等;
组合场景:
我们公司内部有开发者使用基于workflow做的rpc系统SRPC,编写自己的业务代码,跑在k8s集群上。
前面说到k8s做了自己集群的管理,所以业务代码需要一层网关去帮你寻址和转发。
目前我们用的网关是envoy,然后做了SRPC协议的扩展,于是可以支持使用SRPC协议的workflow用户把代码跑在k8s上。
2. workflow完全可以通过二次开发实现nginx的所有功能
实际上网络通信只是workflow的其中一种应用场景,但用作web server的时候,我们有和nginx做过同场景下的性能压测。而且我们也自带了upstream模块,通过配置也可以使用多种负载均衡方式对下游发起请求。
nginx有许多我们暂时核心模块所不支持的功能,比如:
- 配置即可指定restful逻辑的跳转;
- 支持lua代码;
但workflow很多点做得比nginx要更通用友好,比如:
- parallel task比nginx的subrequest要更易用、更好控制流程;
- 二次开发难度比写一个ngx_module_t要简单;
- 连接复用率高(nginx各个进程间连接不能复用;
- 对计算的切换更顺(计算和通信是并列的异步资源;
- 最后很重要的一点,内存边界清晰。交给workflow调度期间用户拿不到task,只有交回给用户的时候(比如callback)才能操作task,然后一切内存会在callback之后被释放干净。而nginx如果对request进行操作,是要求用户维护读过的位置的指针的,用户代码和核心框架代码交织在一起,稍有不慎就会蹦。(别问!问就是写过nginx module蹦过的人...
3. workflow的分布式、机器学习部署的使用场景
感谢对workflow的认可!!!(敲开心 ♪───O(≧∇≦)O────♪
workflow目前是单进程内的框架,如果要做分布式,其实要解决的是你随时希望知道其他人在哪里的问题,所以需要利用workflow去对接服务发现和服务治理。目前服务治理已经在workflow自带的命名服务体系解决了,而服务发现可以使用开发者实际的发现系统(比如上述的envoy等)。机器学习可能还是类似你另一个issue里讨论的场景:Server如何等待一个非本框架的异步事件完成?-- Good Question
workflow目前除了并行、串行,还可以支持DAG,另外提供了WFGraphTask,所以可以自行组建神经网络。
最后~~~
感谢你对于梳理workflow常用场景的建议,我们目前有计划把用到workflow的开发者及实际场景进行汇总,感觉更有说服力和参考价值,你可以到时候查看和提议~
@eatcosmos 如果你可以把这三个问题单独列到一个新issue就更好了,因为这些问题比较独立宽泛,思路可以分享给其他小伙伴,也有助于我后续号召workflow实际开发者场景的汇总~
from workflow.
完全没接触过大型后端开发,都是单机的功能程序,请问如何向一个计算机小白解释workflow的主要用途和应用场景呢?
完全单机的话,workflow也是一个并行计算,进程通信和异步文件IO工具。你可以试试只用WFGoTask,workflow整体退化成一个有任务依赖关系的线程池。
from workflow.
完全没接触过大型后端开发,都是单机的功能程序,请问如何向一个计算机小白解释workflow的主要用途和应用场景呢?
完全单机的话,workflow也是一个并行计算,进程通信和异步文件IO工具。你可以试试只用WFGoTask,workflow整体退化成一个有任务依赖关系的线程池。
想用来通过workflow源码学习后端开发,正好手边的项目是Windows平台下的,一般后端开发都是Linux,
把workflow跑在Windows上的话,并发、调度、高性能这些特性依然有效吗,是不是都用的Linux里面独有的机制概念呢?Windows可以达到高性能吗?
实测windows版性能更高,因为iocp性能很好。目前除了文件异步IO任务windows下没有实现,kafka插件没有在windows分枝里加入之外,其它功能是一致的。
不过上线最好还是Linux。Windows版在公司里没有什么大规模的应用,稳定性我们没有底。
from workflow.
完全没接触过大型后端开发,都是单机的功能程序,请问如何向一个计算机小白解释workflow的主要用途和应用场景呢?
完全单机的话,workflow也是一个并行计算,进程通信和异步文件IO工具。你可以试试只用WFGoTask,workflow整体退化成一个有任务依赖关系的线程池。
想用来通过workflow源码学习后端开发,正好手边的项目是Windows平台下的,一般后端开发都是Linux,
把workflow跑在Windows上的话,并发、调度、高性能这些特性依然有效吗,是不是都用的Linux里面独有的机制概念呢?Windows可以达到高性能吗?实测windows版性能更高,因为iocp性能很好。目前除了文件异步IO任务windows下没有实现,kafka插件没有在windows分枝里加入之外,其它功能是一致的。
不过上线最好还是Linux。Windows版在公司里没有什么大规模的应用,稳定性我们没有底。
请问Windows版本使用的哪个版本的visual studio生成项目的,用的vs2017,生成的项目 ALL_BUILD里面有workflow工程,但是并没有生成这个工程,导致编译INSTALL的时候提示没有 workflow.lib。
写了Windows编译笔记记录了编译问题,现象截图了能帮看下吗
c++-Sogou C++ Workflow-Windows平台编译过程记录
谢谢,编译成功,编译过程流畅,关键就是openssl要单独安装,补充到上面的记录里了。
from workflow.
请问 Windows 版本使用的哪个版本的 visual studio 生成项目的,用的 vs2017,生成的项目 ALL_BUILD 里面有 workflow 工程,但是并没有生成这个工程,导致编译 INSTALL 的时候提示没有 workflow.lib。
写了 Windows 编译笔记记录了编译问题,现象截图了能帮看下吗
c++-Sogou C++ Workflow-Windows 平台编译过程记录
@eatcosmos
VS2017和VS2019都可以的,可以尝试命令行操作下,一般来说,安装好OpenSSL后,在根目录执行下面的两条命令即可:
cmake -B build .
cmake --build build --config [Debug|RelWithDebInfo|Release]
生成的库在"_lib"目录下
链接仅供参考:Windows编译
from workflow.
请问 process 是并发调用的还是串行调用的?比如有多个 client 向 server 发送请求,这些请求是由一个 MPMC 的消息队列维护的吗?如果要实现MPSC的效果,是否必须自己后挂一个queue来实现?
from workflow.
请问 process 是并发调用的还是串行调用的?比如有多个 client 向 server 发送请求,这些请求是由一个 MPMC 的消息队列维护的吗?如果要实现MPSC的效果,是否必须自己后挂一个queue来实现?
那必然是并发的。你需要一个串行的process吗?应该用counter可以实现。
from workflow.
请问 process 是并发调用的还是串行调用的?比如有多个 client 向 server 发送请求,这些请求是由一个 MPMC 的消息队列维护的吗?如果要实现MPSC的效果,是否必须自己后挂一个queue来实现?
你可以发个新的issue出来,我给你写个串行process的示例。
from workflow.
@Barenboim DAG要使用CounterTask的原因是什么呢? 比如最简单的CNN模型就是一个串行任务 前一个节点的输出是下一个节点的输入 直接使用serieswork不可以吗? 这种情况下还有必要使用CounterTask不 :)
from workflow.
@Barenboim DAG要使用CounterTask的原因是什么呢? 比如最简单的CNN模型就是一个串行任务 前一个节点的输出是下一个节点的输入 直接使用serieswork不可以吗? 这种情况下还有必要使用CounterTask不 :)
你说的方法是可行的,可以参考一下WFGraphTask,test目录里有测试用例。 Graph的每节点是一个task,但因为task肯定运行在series里,那么是可以把节点变成多个task的串行的。只是这样子的话,好像graph里处理依赖的方式就不太统一了?
目前比较有意思的课题是在dag里怎么传递数据。WFGraphTask目前需要用户自己处理数据传递。
from workflow.
@Barenboim 是的哈 现在的数据传递需要用户自己处理 如果DAG图比较大的话 这个传输数据的过程还比较复杂 而且感觉比较容易有冗余和出错。 WFGraphTask下来研究一哈 感谢:)
from workflow.
完全没接触过大型后端开发,都是单机的功能程序,请问如何向一个计算机小白解释workflow的主要用途和应用场景呢?
from workflow.
完全没接触过大型后端开发,都是单机的功能程序,请问如何向一个计算机小白解释workflow的主要用途和应用场景呢?
完全单机的话,workflow也是一个并行计算,进程通信和异步文件IO工具。你可以试试只用WFGoTask,workflow整体退化成一个有任务依赖关系的线程池。
想用来通过workflow源码学习后端开发,正好手边的项目是Windows平台下的,一般后端开发都是Linux,
把workflow跑在Windows上的话,多线程函数、调度、高性能这些特性依然有效吗,是不是都用的Linux里面独有的函数、机制呢?Windows可以达到高性能吗?
from workflow.
请问 workflow的可执行文件一般用 systemctl 做守护进程吗,比如 http_echo_server,要确保这个程序一直运行的话,是不是通常加到 systemctl呢?
from workflow.
请问 workflow的可执行文件一般用 systemctl 做守护进程吗,比如 http_echo_server,要确保这个程序一直运行的话,是不是通常加到 systemctl呢?
这个简单的
$ nohup ./http_each_server &
也可以吧?
from workflow.
nohup ./http_each_server &
谢谢,这么简单,还担心中间异常了会不会中断了,所以想守护下
好像一般web服务器都不支持单个请求的阻塞响应,感觉这个这个需求应该很合理,发现workflow可以,逻辑很简单清晰
from workflow.
nohup ./http_each_server &
谢谢,这么简单,还担心中间异常了会不会中断了,所以想守护下
好像一般web服务器都不支持单个请求的阻塞响应,感觉这个这个需求应该很合理,发现workflow可以,逻辑很简单清晰
from workflow.
什么叫单个请求阻塞响应?
from workflow.
什么叫单个请求阻塞响应?
就是分别请求很多文件 /1.txt /2.txt /3.txt ......,这些文件是请求后再动态生成的,需要等几秒后文件生成后再响应请求
网上搜了好像都是需要立即响应,没有提供接口调用文件生成函数
就直接在 process 里加了个循环 判断 abs_path 是否存在,存在就继续 open(),不知道是否合理
from workflow.
什么叫单个请求阻塞响应?
就是分别请求很多文件 /1.txt /2.txt /3.txt ......,这些文件是请求后再动态生成的,需要等几秒后文件生成后再响应请求
网上搜了好像都是需要立即响应,没有提供接口调用文件生成函数
就直接在 process 里加了个循环 判断 abs_path 是否存在,存在就继续 open(),不知道是否合理
方法不合理!你明天重新发个issue,我给你写个正确的方法。不要占用process线程的。
from workflow.
什么叫单个请求阻塞响应?
就是分别请求很多文件 /1.txt /2.txt /3.txt ......,这些文件是请求后再动态生成的,需要等几秒后文件生成后再响应请求
网上搜了好像都是需要立即响应,没有提供接口调用文件生成函数
就直接在 process 里加了个循环 判断 abs_path 是否存在,存在就继续 open(),不知道是否合理方法不合理!你明天重新发个issue,我给你写个正确的方法。不要占用process线程的。
谢谢,发了个 如何在合理位置添加耗时的 文件异步IO任务 ,明天帮检查个看看怎么更合理的
from workflow.
您好,想问一下如果想要阅读源码的话,有推荐的阅读顺序吗?谢谢!
from workflow.
@ybbetter 你好~感谢关注workflow~
因为每个人的使用场景不同,源码阅读建议从自己需要的场景入手比较好,以下是一些小建议:
- 了解源码中基本调用接口:tutorial是根据概念由浅入深的顺序编排的,先根据主页把tutorial试一下,对应的文档也可以先看完,然后看其他主题的文档,了解基本接口;
- 了解任务和工厂的关系:找到你平时最常用的一个场景(如果没有的话,可以从最常用的
Http
协议或其他网络协议入手,看看源码中factory和task的关系;- 根据一个任务的生命周期看基本层次:gdb跟着这个场景看看整体调用流程经过那些层次,具体感兴趣的部分可以单独拿出来细读源码;
- 理解异步资源的并列关系:workflow内部多种异步资源是并列的,包括:
网络
、CPU
、磁盘
、计时器
和计数器
,可以了解下他们在源码中互相是什么关系;- 底层具体资源的调度和复用实现:对epoll的封装或者多维队列去实现线程任务的调度,底层都有非常精巧的设计,这些可以在了解workflow整体架构之后深入细看。
祝你能够获得更多的思路启发,有任何建设性的提议也欢迎随时与我们交流~
可以出一些实际产品中的复杂业务场景的应用demo文档吗,感觉这样结合应用效率会更高。因为没机会接触复杂业务,目前有需求的最复杂业务的就是这个了 Server如何等待一个非本框架的异步事件完成? #328 ,所以其他高级功能都想不出来可以怎么用或者为什么要这么用:
比如异步请求只想到了参考tutorial 文件异步IO任务 里的代码,没想到可以用 计数器 的功能(使用后工作流程更清晰了),前面多亏 @Barenboim 帮写了个demo,发现对计数器可以这么用,不然就while循环看哪里能写的就直接写里面了,这样写逻辑可能就越来越乱了。
不过看了计数器的复杂功能还是没印象,因为想不出来有什么可以应用的复杂场景.
from workflow.
- 请问 workflow 和 k8s 什么关系的,一般组合使用的时候是怎样的搭配?
- workflow可以完全通过自己组合实现nginx的所有功能吗?
- 感觉workflow的设计逻辑很直观朴素,没有复杂新名词新概念,workflow 如何应用于 分布式、机器学习部署等应用场景呢?因为看到readme里说可以用于神经网络?
from workflow.
@holmes1412 谢谢,写的太详细认真了,增长了很多新知识,很多概念都没机会接触过. 问的3个问题都是在网上听说到的高频词,k8s、nginx、分布式、生产环境机器学习...实际没有自己实际用过,等有使用机会了看怎么结合workflow用起来,到时再单独发issue问具体些.
期待 workflow 取代 nginx 成为主流,没实际用过nginx,因为看教程感觉nginx要学的新名词很多有点望而却步,而workflow的思路很朴素,编译简单上手快一键运行demo,重点在业务流/workseries逻辑而不是学习workflow本身的新增概念,既然能实现nginx的所有功能而且效率更高,应该得到更多普及.
from workflow.
请问 workflow能否作为一个C++的微服务框架,通过workflow怎么开发一个微服务处理不同的Get,Post请求?以及如何解析类似于图片格式这样的数据?
from workflow.
请问 workflow能否作为一个C++的微服务框架,通过workflow怎么开发一个微服务处理不同的Get,Post请求?以及如何解析类似于图片格式这样的数据?
这个肯定可以的呀,而且非常方便快捷。但是像解析图片,解析json这类的功能我们是没有提供的,你只需要在process里调用你自己的解析库就可以了。复杂的解析还可以封装成计算任务,使通讯与计算的融合更加高效。
from workflow.
想问一下,workflow 支持不支持功能裁剪.mysql redis kafka之类的代码在嵌入式环境下 都不需要.目前在cmakelists.txt中没有看到相关的内容.
from workflow.
非常好裁减。kafka本来就默认不编译。redis,mysql直接不编译相关.cc和.c文件就可以了,头文件都不用改。
from workflow.
请问 workflow能否作为一个C++的微服务框架,通过workflow怎么开发一个微服务处理不同的Get,Post请求?以及如何解析类似于图片格式这样的数据?
这个肯定可以的呀,而且非常方便快捷。但是像解析图片,解析json这类的功能我们是没有提供的,你只需要在process里调用你自己的解析库就可以了。复杂的解析还可以封装成计算任务,使通讯与计算的融合更加高效。
一个server如何处理不同的路由请求,目前看到的都是一个serverTask对应一个process,所有请求的处理都写在一个process里面么,还是有其它的设计?要是有更多使用实际场景的tutorial就更好了,要不然快速上手还是要对源码进一步深入研究,感谢。
from workflow.
请问 workflow能否作为一个C++的微服务框架,通过workflow怎么开发一个微服务处理不同的Get,Post请求?以及如何解析类似于图片格式这样的数据?
这个肯定可以的呀,而且非常方便快捷。但是像解析图片,解析json这类的功能我们是没有提供的,你只需要在process里调用你自己的解析库就可以了。复杂的解析还可以封装成计算任务,使通讯与计算的融合更加高效。
一个server如何处理不同的路由请求,目前看到的都是一个serverTask对应一个process,所有请求的处理都写在一个process里面么,还是有其它的设计?要是有更多使用实际场景的tutorial就更好了,要不然快速上手还是要对源码进一步深入研究,感谢。
嗯嗯,项目还有好多内容,例示里没有覆盖到,但是只要把文档示例都简单过一遍,主要的功能点和套路都可以了解。更深入的东西就只能看看源码了。
我们的框架没有提供不同前缀的路由功能,我们认为这些和核心无关,用户可以在process的基础上再做封装。
from workflow.
为啥这里return的时候程序会崩?调试最后挂在dispatch中的subtask_done(),麻烦求解答,以及workflow中的http协议,有没有提供处理不同格式的请求body的解析?
from workflow.
为啥这里return的时候程序会崩?调试最后挂在dispatch中的subtask_done(),麻烦求解答,以及workflow中的http协议,有没有提供处理不同格式的请求body的解析?
我怀疑你的main函数退出了。server.start()是非阻塞的呀,注意堵住主进程。
尽量发新的issue,不要回复在这里呀。
from workflow.
您好,心中有一些疑惑向您请教,callback方式比future或用户态协程能给程序带来更高的效率
是基于什么样的考虑得出的结论,还是某些论文得出的结论?或者如果我想弄明白这些问题,应该怎样按图索骥。
from workflow.
@kernelai 你好呀,其实看看future或者用户态协程的概念就很好理解了。网上评测也有许多,可以到github上找找~具体思路我这里粗浅地帮你梳理一下,仅供参考:
具体问题:异步事件回来了得有个机制来通知我。
假设场景:同时发出10w个请求,而我们吞吐只有1w。问:以下三种机制有什么优劣。
1. future
我发出一个异步请求,基本上是拿着一个future在这get(),等到东西回来了我就能get到。这个很明显,我会浪费一个线程在这里等。
2. 用户态协程
这里仅讨论传统的有栈协程,语言级别提供的支持另说。每个异步请求发出时即需要分配一份栈空间,把寄存器上可能用到的东西全部保存下来。
3. callback
对C语言来说只是一个函数指针,请求发出时由框架来帮你保存具体需要的上下文,请求回来时框架帮你用有限的内部线程去做真正和吞吐相关的事情,资源上是最节省的。
这个话题很大,以上仅抛砖引玉,不可能概括得很全面。欢迎动手尝试一下对比,或者再单独发issue追更~~~
from workflow.
您好,心中有一些疑惑向您请教,
callback方式比future或用户态协程能给程序带来更高的效率
是基于什么样的考虑得出的结论,还是某些论文得出的结论?或者如果我想弄明白这些问题,应该怎样按图索骥。
您好。你是360的小伙伴吧?之前线下见过的。我也觉得这是个好问题可以单开issue讨论,
from workflow.
@kernelai 你好呀,其实看看future或者用户态协程的概念就很好理解了。网上评测也有许多,可以到github上找找~具体思路我这里粗浅地帮你梳理一下,仅供参考:
具体问题:异步事件回来了得有个机制来通知我。 假设场景:同时发出10w个请求,而我们吞吐只有1w。问:以下三种机制有什么优劣。
1. future 我发出一个异步请求,基本上是拿着一个future在这get(),等到东西回来了我就能get到。这个很明显,我会浪费一个线程在这里等。
2. 用户态协程 这里仅讨论传统的有栈协程,语言级别提供的支持另说。每个异步请求发出时即需要分配一份栈空间,把寄存器上可能用到的东西全部保存下来。
3. callback 对C语言来说只是一个函数指针,请求发出时由框架来帮你保存具体需要的上下文,请求回来时框架帮你用有限的内部线程去做真正和吞吐相关的事情,资源上是最节省的。
这个话题很大,以上仅抛砖引玉,不可能概括得很全面。欢迎动手尝试一下对比,或者再单独发issue追更~~~
感谢您的回答。
背景是最近在调研一些高性能异步框架,其中也看到了seastar。有些初步调研结论我同步到这里,咱们一起讨论下。
from workflow.
您好,心中有一些疑惑向您请教,
callback方式比future或用户态协程能给程序带来更高的效率
是基于什么样的考虑得出的结论,还是某些论文得出的结论?或者如果我想弄明白这些问题,应该怎样按图索骥。您好。你是360的小伙伴吧?之前线下见过的。我也觉得这是个好问题可以单开issue讨论,
是的。^~^
from workflow.
@kernelai 你好呀,其实看看future或者用户态协程的概念就很好理解了。网上评测也有许多,可以到github上找找~具体思路我这里粗浅地帮你梳理一下,仅供参考:
具体问题:异步事件回来了得有个机制来通知我。 假设场景:同时发出10w个请求,而我们吞吐只有1w。问:以下三种机制有什么优劣。
1. future 我发出一个异步请求,基本上是拿着一个future在这get(),等到东西回来了我就能get到。这个很明显,我会浪费一个线程在这里等。
2. 用户态协程 这里仅讨论传统的有栈协程,语言级别提供的支持另说。每个异步请求发出时即需要分配一份栈空间,把寄存器上可能用到的东西全部保存下来。
3. callback 对C语言来说只是一个函数指针,请求发出时由框架来帮你保存具体需要的上下文,请求回来时框架帮你用有限的内部线程去做真正和吞吐相关的事情,资源上是最节省的。
这个话题很大,以上仅抛砖引玉,不可能概括得很全面。欢迎动手尝试一下对比,或者再单独发issue追更~~~感谢您的回答。 背景是最近在调研一些高性能异步框架,其中也看到了seastar。有些初步调研结论我同步到这里,咱们一起讨论下。
欢迎把和seastar的对比新开个issue交流。
from workflow.
为什么源码里面一点注释都不写呢?
from workflow.
为什么源码里面一点注释都不写呢?
确实注释有点少。我们希望大多数接口定义本身就能解释自己。有些我们也加了注释。
实现代码除了特别需求提醒的,一般不会加大段注释。
from workflow.
我想使用httpserver传输大文件,如果client建立一个http_task向server请求一个大文件 ,然后server chunked分块传输,client会接受完所有的chunk后再调用callback 吗?
from workflow.
我想使用httpserver传输大文件,如果client建立一个http_task向server请求一个大文件 ,然后server chunked分块传输,client会接受完所有的chunk后再调用callback 吗?
独立的问题重新发issue吧。
from workflow.
WaitGroup的注释较少,可以介绍一下WaitGroup两个函数done() 和wait()的使用方法么?
from workflow.
WaitGroup的注释较少,可以介绍一下WaitGroup两个函数done() 和wait()的使用方法么?
你好。WaitGroup不是我们的一个核心组件,一般只在main函数里应用,用于防止程序退出。其它任何地方都是全异步的,不存在等待。
WaitGroup本身也只有wait和done两个操作,例如初始化时传3,那么3次done之后,wait的人就通过了,好像也没有太多需要描述的。
from workflow.
from workflow.
多谢回复! 另外,用workflow来处理计算或者计算密集型应用函数,是否可以替代类似OpenMP的多线程编程? 方法上可以把结果矩阵或者向量,通过均分的方法,把大任务划分成多个小任务组成的serial 来start ()完成么? 有数值计算或者高性能多核并行计算类应用,会采用此方法来做性能加速么?适合替代OpenMP么,有优势么? | | Qingchun Xie 15210341746 Best Regards | ---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2023年11月09日 22:49 | | 收件人 | sogou/workflow @.> | | 抄送人 | xqch1983 @.>, Comment @.> | | 主题 | Re: [sogou/workflow] FAQ(持续更新) (#170) | WaitGroup的注释较少,可以介绍一下WaitGroup两个函数done() 和wait()的使用方法么? 你好。WaitGroup不是我们的一个核心组件,一般只在main函数里应用,用于防止程序退出。其它任何地方都是全异步的,不存在等待。 WaitGroup本身也只有wait和done两个操作,例如初始化时传3,那么3次done之后,wait的人就通过了,好像也没有太多需要描述的。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
你好,具体问题重新发issue吧。workflow代替openMP应该是比较容易的,你的需求可能可以对应到某一类计算模式上。
from workflow.
Related Issues (20)
- 框架现在支不支持创建多个tcp tls客户端任务,每个tls客户端使用的证书私钥以及ca证书都不同的通信方式 HOT 26
- http客户端发送消息 HOT 9
- 有没有复杂一些的http server例子? HOT 1
- 我看了workflow和wfrest,都写得很优雅,上手很快👍🏻。但是我有个疑问,Web服务器为什么不用go和gin呢,而要用workflow?选择workflow的优势有啥? HOT 2
- websocket并发问题咨询 HOT 2
- 用WFFileIOTask写入字符串到文件里出现乱码 HOT 2
- 在tutorial执行"make"报错"collect2: error: ld returned 1 exit status" HOT 7
- 咨询tutorial-05-http-proxy的reply_callback() HOT 2
- 咨询curl向workflow server上传文件,workflow server如何读取文件内容 HOT 2
- httpServerTask的回调函数中设置响应会回复默认响应 HOT 4
- 关于wait_group的详细用法 HOT 26
- 关于workflow TCP连接获取连接地址以及端口问题 HOT 1
- nossl分支tutorial make报错 HOT 5
- 关于GPL许可证兼容性的疑虑 HOT 1
- 支持PostgreSQL协议的讨论帖 HOT 21
- 关于mysql事务的回滚问题 HOT 3
- workflow充当HTTP网关时数据量太大就收不全 HOT 28
- workflow是否支持RPC协议? HOT 1
- WFNetworkTask http 服务怎样获取 post 请求的数据 HOT 2
- 咨询头文件报错问题 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from workflow.