我正试图用D编程,我遇到了一些问题.我开始使用core.thread Thread类,它提供了启动线程然后将当前线程连接到它的支持.D似乎希望人们使用消息传递而不是锁定/同步方法,所以我想我会尝试一下,但是我看到的每个消息传递示例都需要tid,我似乎无法从Thread类中获取.我在网上看到的代码示例实际上使用了spawn,它返回tid而不是使用Thread包装器,然后使用tid将消息传递给Thread.但现在似乎没有任何方法可以根据其tid加入线程!不仅如此,你似乎无法产生委托,这需要我添加一个不必要的间接级别.
所以我的问题首先是,为什么有两种完全不同的线程风格?第二,为什么他们在一起提供基本上所有你需要的东西时都是如此不完整?
core.thread为线程提供基本的低级基元.std.concurrency在core.thread内部使用.A tid只能从中得到std.concurrency.spawn.
所以我的问题首先是,为什么有两种完全不同的线程风格?
你不妨问一下,为什么有两种编写代码的方法,普通的D和内联汇编代码.有高(呃)水平和低水平.
第二,为什么他们在一起提供基本上所有你需要的东西时都是如此不完整?
它们并不完整,但您的多线程必须设计为在一个或另一个中工作.如果std.concurrency允许任意访问Threads等,它所做的保证可能不会那么强大.
为了回答你更具体的问题,它需要a function而不是a delegate因为a delegate采用了一个允许突变的上下文指针,这会破坏一些std.concurrency假设.请注意,spawn不允许具有可变间接的参数,因此no委托事物不应该令人震惊.
而不是加入,你会发送一个"停止"消息给你的线程.同样,这是更高级别,并使用更高级别的结构.
| 归档时间: |
|
| 查看次数: |
2143 次 |
| 最近记录: |