并发编程和并行编程有什么区别?我问谷歌,但没有找到任何帮助我理解这种差异的东西.你能给我一个例子吗?
现在我发现了这个解释:http://www.linux-mag.com/id/7411 - 但"并发性是程序的属性"vs"并行执行是机器的属性"对我来说还不够 - 我还不能说什么是什么.
在服务器端Javascript引擎的上下文中,什么是非阻塞I/O或异步I/O?我认为这被提到是优于Java服务器端实现的优势.
有什么区别:
可以是异步和非阻塞(以及基于事件的)吗?
在编程中最重要的是拥有一些东西:异步,非阻塞和/或事件库(或全部3)?
如果你能提供一些例子,那就太棒了.
这个问题正在被问到,因为我正在阅读关于类似主题的这篇伟大的StackOverflow文章,但它没有回答我上面的问题.
asynchronous programming-languages event-based-programming nonblocking blocking
我正在阅读'使用Java操作系统概念'.我对阻塞和同步的概念很困惑,它们之间有什么区别?
我打算使用Scala和Akka构建一个服务,它将严重依赖于电子邮件.事实上,与我的服务进行的大多数沟通都将通过发送信件并获得回复来完成.我想这意味着我需要一个可靠的电子邮件服务器以及与Scala通信的方式.
问题是,这样做的最佳做法是什么?我应该选择哪种电子邮件服务器以及用于完成此任务的Scala解决方案?
关于同步 - 异步的概念,我在这里从阻塞和非阻塞操作(在OpenMPI中)的上下文中略微混淆了:
我已经完成了之前的同步 - 异步 - 阻塞 - stackoverflow上的非阻塞问题(异步与非阻塞),但对我没有帮助.我所知道的 :
MPI_Isend):方法返回并执行下一行 - >非阻塞MPI_Send):对于大型消息,它会阻塞直到传输完成那么如何以及为什么MPI_ISEND阻止(链接1)以及阻止(链接2)?这是异步和同步的意思MPI_Isend吗?
类似引起混淆关于MPI_Ssend&MPI_Issend中,由于小号在MPI_ 小号 SEND装置同步(或阻塞),并且: -
也是我 mmediate是非阻塞的,那么,怎样才能MPI_ IS SEND是小号 ynchronous&回到我 mmediately?
我想在阻塞和非阻塞OpenMPI通信的上下文中异步和同步需要更清晰.在这方面的实际例子或类比将是非常有用的.
System.IO.File在.NET和.NET Core 中有一系列Read...Async()方法,所有这些方法都返回Task<byte[]>或Task<string>(Task<T>是.NET与Java 的 等价物Future<T>)。
这看起来在很大程度上等同于AsynchronousFileChannelAPI(它们要么消耗CompletionHandler或返回 a Future),但有一个主要区别。
AsynchronousFileChannel 使用托管后台线程执行异步 I/O(该线程可能由默认线程池提供(sun.nio.ch.ThreadPool ) 或ExecutorService在通道创建期间显式指定的)。FileStream另一方面,.NET 中的实现将FileOptions.Asynchronous标志传递给底层操作系统(另请参阅同步和异步 I/O),不产生任何托管后台线程并使用所谓的重叠 I/O。sun.nio.ch.WindowsAsynchronousFileChannelImpl,这正是重叠 I/O之上的抽象层。我已经读过select和多线程编程是低性能IO模型,例如这篇关于高性能IO的IBM developerworks文章.
我不明白同步/异步如何:阻塞/非阻塞正在改善性能.为什么AIO是最佳选择?
我的问题分为两部分:
"异步服务器"究竟是什么意思,通常人们称之为龙卷风?有人可以提供一个具体的例子来说明概念/定义吗?
在Tornado的情况下,"非阻塞"究竟是什么意思?这与上面的异步性有关吗?另外,我在某处读它总是使用单个线程来处理所有请求,这是否意味着请求是逐个或并行处理的?如果是后一种情况,龙卷风怎么做呢?
我正在尝试修改从数据库读取的串行程序,并将结果写入文件,这是以阻塞方式完成的,我认为我们可以通过内存缓冲区获得性能提升,并将文件写入"背景"是异步的
我可以想到"求职面试"解决方案,使用线程,共享资源,同步块等...但我确信有更好的方法(有一个很好的小"延迟写入"库,那里会这样做为了我?)
任何java.util.concurrent套餐是否提供任何帮助?java.nio?或者JMS/ActiveMQ?
那么PipedOutputStream/ PipedInputStream作为我缓冲的基础呢?
如何在Java中实现延迟/后台/缓冲/非阻塞/异步文件写入?
编辑:
基于这些建议,并避免关闭这个问题,(因为我认为它仍然基于答案评论和投票相关)这里是尝试使其更集中.(我保留上面的原始问题所以答案仍将保留在上下文中,因为有一些非常好的问题)
PipedOutputStream/ PipedInputStream(或PipedReader/ PipedWriter)与之间的实际区别是什么?BlockingQueue 我一直在阅读并尽可能多地浏览NodeJs代码,但我对此有点困惑:
Node是单线程的意思是什么,非阻塞I/O是什么意思?我可以通过生成子进程来实现第一个,通过使用异步库来实现第二个进程.但我想清楚它的含义以及非阻塞I/O如何仍然会降低您的应用程序速度.
所以我在颤振中尝试这段代码:
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int _i = 1;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: MaterialButton(
child: Text('You Pressed Me $_i'),
onPressed: () {
setState(() {
_i++;
print('inside i = $_i');
});
sleep(Duration(seconds: 10));
_i++;
print('outside i = $_i');
}
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
预期行为(运行并按下按钮一次后):按钮显示文本"You Pressed Me 2",
然后变量_i在不影响视觉效果的情况下增加到 3。
实际行为 …
asynchronous ×4
io ×4
blocking ×3
java ×2
node.js ×2
nonblocking ×2
tornado ×2
aio ×1
c++ ×1
concurrency ×1
dart ×1
email ×1
flutter ×1
mail-server ×1
mpi ×1
nio ×1
openmpi ×1
python ×1
scala ×1
synchronous ×1
webserver ×1