动机和概述

这个小节又是一顿闲扯,想直接看方案的可以直接忽略。

在上海的时候,早上自然不必说,六点多的时候,全国各地哪哪路上都通畅,但是下班时就不一样了,由于我讨厌地铁站那种复杂无效的通行程序,为了能从闸北区快速到达嘉定区,我宁可先辗转到上海火车站,然后在那里坐全程高速的新嘉专线也不愿意去坐普通公交,这样保证一个小时内到达嘉定老城区,然后在小区家门口点一根烟…。当然,这得益于上海的快速路网络非常发达,超过10公里的路程基本都能保证80%以上甚至90%的快速路覆盖率,当然早晚高峰时,高架快速路也会通行缓慢,但是并不会停滞,即使再慢,也是缓慢前行的,这就是立体交通的好处。

深圳就完全不同了。深圳的快速路交通网络依然还处在发展之中,立体交通快速交通网络仍然不是很发达,很多时候,车辆不得不将大量的时间消耗在等待红绿灯这种事情上,特别是早晚高峰期的南山科技园片区,深南大道,科技路这个区域,简直让人有拆房子炸楼的冲动!早高峰我是能避开,晚高峰想避开则非常难。科技园深南大道北有北环,南有滨海,西有南海,东有沙河西,然而毛细血管还是不够,导致深南大道和科技路这些枝杈道路上的流量很难卸载到快速路网络上。

不过,看到这个新闻,心里还是有点小爽的: 
深圳将新增“十横十三纵”总规模1041公里的高快速路网:http://news.sina.com.cn/c/2018-06-15/doc-ihcyszrz6832897.shtml 
希望不要是纸上谈兵,这么大的一线城市,交通网络的优化应该是先行的。

现有的十字路口

为了讨论简便,我先不考虑行人,因为这可以用下沉式通道解决。不考虑行人的话,右转总是可行的,因此我也不会讨论右转的情况。在以上的约定下,先来看一下现如今的两种常见的十字路口放行规则:


可以看得出,无论哪种方式,都是同时只有两个车道可以并行放行。我在想,这是什么限制导致了这么低的并行度?

新的十字路口

前段时间考虑Linux TCP实现inet_hash函数时的spinlock问题,显然那是怕hash表被破坏而必须引入的串行机制,那么这里显然是为了防止车毁人亡而必须引入的lock机制,在面对那个TCP问题时,我使用per slot per cpu策略进一步细化了锁的粒度,稍微的空间换取了O(1)O(1)的inet_hash性能。

在十字路口问题上,仔细想想,其实是一道规则限制了想象力,即“靠右行驶”!稍微灵活地理解这个规则的限制,将会带来解锁后接近一倍的并行度提升!潮汐车道已经打破了人们对靠右行驶的思维定势,其实这里也是同样的思路。

在这里,我采用和TCP inet_hash完全同样的思路,即细化lock的粒度,同时“将左转待转区搬到对向车道!”来解锁,从而可以让对向两个直行,两个左转4个车道同时并行放行:


拆分了互斥的粒度后,其实也是用稍微的空间代价换取了时间上的高效。

其实,传统的左转待转区的设计本来也就是一个小小的优化,最初是没有这个左转待转区的,后来人们想到在一排车由于互斥确定还不能左转的时候,能不能让它们着手准备起来呢?然而,如果你把这个待转区放到对向那个中间的车道,就会发现,锁彻底解开来了。

当然,在细节上还存在很多的问题,但这些都是可以解决的。比如说下面的细节:

红色圆圈处是不是要拓宽一下呢?红色箭头表示车辆有一个斜穿的角度,这里是不是可以对其一下呢?比如下面的样子:

说白了,还是要增加带宽!

后记

想提高并行性,本质上就是一个解锁的过程,你要明白整个一个流程的每一个细节,哪个步骤在什么时间不能做,那么这段时间也不要让它闲着,试着做点准备工作或者随便其它什么。

设计一个对向车道的左转待转区提高十字路口的并行通行率相关推荐

  1. 左转待转区----当同向直行信号灯绿灯亮时,左转弯的车辆进入左转待转区等候放行信号(即使此时左转弯灯是红色的) 注意:当直行红灯时候禁止进入...

    左转待转区是什么?不要被扣6分才后悔! from:https://www.sohu.com/a/145066213_632210 一.什么是左转待转区? 从字面上看,"左转待转区" ...

  2. 左操作数必须为左值_进入“左转弯待转区”被罚怎么回事?

    想必各位老司机开车路上跑时, 一定见过这个地面标识. ▼ 考考你, 你知道地面画这个是什么意思吗? 这不就是左转待转区嘛! 每天上班必经之路的路口就有这个哎~左转车辆可以提前进入这里面等待,减少左转车 ...

  3. beatsx三闪红灯是什么意思_“左转弯待转区”还有坑?走错了等于闯红灯,驾照直接扣6分罚200...

    导读:"左转弯待转区"还有坑?走错了等于闯红灯,驾照直接扣6分罚200 现在街上的车越来越多,"车水马龙"的社会,自然是需要交通规则来维持秩序.一直到现在,我国 ...

  4. 十字路口待转区什么用_左转待转区,到底怎样掉头?

    ​对于左转待转区,很多车主朋友至今还是一脸懵逼:到底何时可以进入左转弯待转区呢?左转待转区如何掉头?要掉头的车用不用看红绿灯?等问题.今天轮谷就来给朋友们说说这个问题,希望对你有帮助.觉得不错,记得文 ...

  5. 十字路口待转区什么用_左转待转区的几种违章 稍不注意你绝对就要中招

    我们司机朋友在路上的时候,最怕的应该就是被拍照了吧,毕竟一次违章就是几百块钱,再加上还要扣分,更是让人头疼,那么我们在路上行驶的时候有哪些经常被忽视的违章呢?今天我们就来和大家分享一个比较常见的违章, ...

  6. 十字路口待转区什么用_开车经过十字路口,什么时候可以进入左转待转区呢?...

    对于左转弯待转区,很多人可能都没见过,毕竟这不像斑马线一样随处可见,不熟练路况和交通标志的人来说,碰到了难免不知道怎么办,到底什么时候可以进入,什么时候不能,这都是一个问题. 如果你问这个区域是干什么 ...

  7. 十字路口待转区什么用_这个区域是干嘛用的?详解左转弯待转区规则

    某天有妹子在朋友圈里抱怨:"今天开车等绿灯左转,明明只有直行是绿灯,左转还是红灯,后面的车就老嘀嘀让我走--怎么走啊?让姐闯红灯呀?就一神经病!"妹子怒了,她不理解后面的车为何会在 ...

  8. 十字路口待转区什么用_都知道“左转待转区”,但到底该怎么走?老司机给你一次讲清楚...

    对车主们来说,行车安全是最为重要的,即便是驾驶技术最好的老司机也不能忽略这一点.正所谓"常在河边走,哪有不湿鞋",有时候即便再小心,但也不排除发生被剐蹭的情况,尤其是现在新手车主不 ...

  9. 模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序_操作系统基础6-支持操作系统的最基本的硬件-中断...

    无论是桌面PC操作系统还是嵌入式都是多任务的操作系统,而很遗憾,处理器往往是单个的,即便在硬件成本逐渐下降,而硬件配置直线上升的今天,PC机的核心可能已经达到4核心,8核心,而手机移动设备更不可思议的 ...

  10. UI设计干货素材|简单素材模板教你分分钟提高UI设计水平!

    对于初学者来说,设计经常会没有思路 为了保证更优用户体验 更是十八般武艺,样样精通 看看这些优秀的简单素材模板教你分分钟提高UI设计水平! 视觉动效 能有效提升用户满足感,刺激其多次操作 语音援助UI ...

最新文章

  1. 五年前的转正我没有留下,校招进不了大公司就是失败吗?
  2. python安装步骤win10-教你如何在Win10系统安装Python?
  3. Python爬虫(二)_urllib2的使用
  4. 网易云信新增用户、IM、实时音视频多维度统计功能
  5. 如何利用计算机完成科研项目,承担科研项目情况怎样填写
  6. MSBuild编译扩展
  7. P5708 【深基2.习2】三角形面积(python3实现)
  8. 雪城大学信息安全讲义 七、格式化字符串漏洞
  9. HDU 2068 Choose the best route
  10. 深度学习优化算法大全系列4:AdaGrad(Adaptive Gradient)
  11. python-unicode十进制数字转中文
  12. 【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
  13. java/php/net/python“最终幻想14”游戏时装图鉴网站设计与制作
  14. win10共享计算机win7,Win7系统和win10系统设置共享打印机的方法
  15. 2016年东莞市程序设计竞赛镇区选拔赛上机试题小学组:seat(找座位)
  16. qt 宋体 linux,QT 使用自己的字库
  17. App Store上推广App的实战经验
  18. 从零开始SVN(2)--Eclipse、Subclipse、分支开发
  19. WPS如何快速输入随机姓名
  20. Rust企业落地探索

热门文章

  1. 戴尔笔记本win10系统迁移到新固态硬盘
  2. hp服务器系统时间一直变慢,怎么解决hp1010 win7打印机打印速度变慢的方法
  3. Kubernetes核心概念总结
  4. php中用div句子给背景图片添加文字,PHP给图片添加文字水印实例
  5. citrix终端linux,Citrix XenDesktop发布Centos 7.2桌面(六)--安装Linux VDA
  6. 腾讯云图灵机器人接入微信号
  7. centos7 卸载firewalld防火墙安装iptables
  8. This request has been blocked; the content must be served over HTTPS.
  9. kube-scheduler源码分析(三)之 scheduleOne
  10. java中word转pdf/word转图片/word转html/html转word等操作