# 付録 (Delphi コンカレントプログラミング) --- tags: Delphi プログラミング Pascal embarcadero objectpascal created_at: 2021-12-21 updated_at: 2024-05-22 --- # 付録 ## データベースとマルチスレッド コネクションプーリングについては次の記事を参考にしてください。 - [基礎から学べる FireDAC データアクセス再入門 (番外編) (blogs.embarcadero.com)](https://blogs.embarcadero.com/ja/firedac-tutorial-07-ja/) - [マルチスレッドアプリケーションでの IBX の利用 (Qiita)](./5336b8cad371596bb7ea.md) ## Concurrent Pascal について マルチスレッドプログラミングにおける**モニタ**という概念はエドガー・ダイクストラがアイデアを提案し、パー・ブリンチ・ハンセンと C.A.R.ホーアによって定義され、 - [モニタ (同期) (Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8B%E3%82%BF_(%E5%90%8C%E6%9C%9F)) アルフレッド・C・ハートマン (と、パー・ブリンチ・ハンセン) により **Concurrent Pascal** (1974 年) において初めて実装されました [^1]。 - [Concurrent Pascal (Wikipedia)](https://en.wikipedia.org/wiki/Concurrent_Pascal) これが回りまわって Delphi にやってきたというわけです (記事中で [TMonitor](./9f3c7534e2ac406ba7dc.md#23-systemtmonitor) が紹介されています)。Concurrent Pascal のモニタ型のコードは次のような感じです。 ```pascal type linebuffer = monitor var contents: line; full: Boolean; sender, receiver: queue; procedure entry receive(var text: line); begin if not full then delay(receiver); text := contents; full := False; continue(sender); end; procedure entry send(var text: line); begin if full then delay(sender); contents := text; full := True; continue(receiver); end; begin full := False; end; ``` Concurrent Pascal には **Simula 67** から借りてきたような文法があります (クラスとか)。Concurrent Pascal の構文図は [SpringerLink の Back Matter](https://link.springer.com/book/10.1007/3-540-08240-9) で読めます。 ![image.png](./images/dd2703fe-527d-f7d3-d243-1cff39e0f0d0.png) | タイトル | 著者 | ISBN-10
(Amazon) |出版年| |:---|:--|:---:|:-:| | [A Concurrent Pascal Compiler for Minicomputers](https://link.springer.com/book/10.1007/3-540-08240-9) | アルフレッド・C・ハートマン(著) | [3540082409](https://www.amazon.co.jp/dp/3540082409/?tag=deko0f-22) | 1977/6 | | The Architecture of Concurrent Programs | パー・ブリンチ・ハンセン(著) | [0130446289](https://www.amazon.co.jp/dp/0130446289/?tag=deko0f-22) | 1977/12 | | コンピュータ・サイエンス研究書シリーズ 35
並行動作プログラムの構造| パー・ブリンチ・ハンセン(著)
田中英彦(訳) | [B000J6MYTU](https://www.amazon.co.jp/dp/B000J6MYTU/?tag=deko0f-22) | 1980/1/25 | :::note [『並行動作プログラムの構造』](https://dl.ndl.go.jp/pid/12630475)は国立国会図書館デジタルコレクションで読む事ができます。書籍の閲覧には国立国会図書館の利用者登録 ([本登録](https://www.ndl.go.jp/jp/registration/individuals_official.html)) が必要です。 ::: **See also:** - [Simula (DocWiki)](https://ja.wikipedia.org/wiki/Simula) - [マルチスレッド・プログラミング(1) (tsukuba.ac.jp)](http://www.cs.tsukuba.ac.jp/~yas/cs/csys-2021/2021-04-16/) - [第2部 Concurrent Pascal (Vimeo)](https://vimeo.com/536691859) ## SuperPascal について パー・ブリンチ・ハンセンが書いた並行処理可能な Pascal に **SuperPascal** (1993 年) があります。 **See also:** - [SuperPascal を動かしてみる (Qiita)](./9da269fdbfa7ba8bbd99.md) ## 参考文献 記事を書く上で参考にした書籍です。 | タイトル | 著者 | ISBN-10
(Amazon) |出版年| |:---|:--|:---:|:-:| | [Mastering Delphi Programming: A Complete Reference Guide](https://www.packtpub.com/product/mastering-delphi-programming-a-complete-reference-guide/9781838989118) | Primož Gabrijelčič (著) | [1838989110](https://www.amazon.co.jp/dp/1838989110/?tag=deko0f-22) | 2019/11/26 | | [Delphi Cookbook Third Edition](https://www.packtpub.com/product/delphi-cookbook-third-edition/9781788621304) | Daniele Spinetti (著) | [B07FNWNRSY](https://www.amazon.co.jp/dp/B07FNWNRSY/?tag=deko0f-22) | 2018/7/31 | | [Delphi High Performance](https://www.packtpub.com/product/delphi-high-performance/9781788625456) | Primož Gabrijelčič (著) | [1788625455](https://www.amazon.co.jp/dp/1788625455/?tag=deko0f-22) | 2018/2/26 | | [More Coding in Delphi](https://leanpub.com/morecodingindelphi) | Nick Hodges (著) | [194126610X](https://www.amazon.co.jp/dp/194126610X/?tag=deko0f-22) | 2015/12/06 | | [Java 言語で学ぶデザインパターン入門 マルチスレッド編](https://www.sbcr.jp/product/4797319127/) | 結城 浩 (著) | [4797319127](https://www.amazon.co.jp/dp/4797319127/?tag=deko0f-22) | 2002/6/28 | | [Delphi クイックリファレンス](https://www.oreilly.co.jp/books/4873110408/) | Ray Lischner (著), 光田 秀, 竹田 知生 (訳) | [4873110408](https://www.amazon.co.jp/dp/4873110408/?tag=deko0f-22) | 2001/5/1 | | [Delphi マガジン Vol.5](./b581458db5140bd078cf.md) [^2] | PS ネットワーク | [4939049051](https://www.amazon.co.jp/dp/4939049051/?tag=deko0f-22) | 1999/7/1 | | [Delphi マガジン Vol.4](./b581458db5140bd078cf.md) [^3] | PS ネットワーク | [4939049043](https://www.amazon.co.jp/dp/4939049043/?tag=deko0f-22) | 1999/5/1 | | [Delphi マガジン Vol.3](./b581458db5140bd078cf.md) [^4] | PS ネットワーク | [4939049035](https://www.amazon.co.jp/dp/4939049035/?tag=deko0f-22) | 1999/3/1 | | Delphi 4 プログラミング技法 Vol.1 | Xavier Pacheco (著), Steve Teixeria (著), 日向 俊二 (訳) | [489471082X](https://www.amazon.co.jp/dp/489471082X/?tag=deko0f-22) | 1998/12/25 | | インサイド Windows NT 第二版 | David A. Solomon (著), 東京ネットワーク情報サービス(訳) | [4891000309](https://www.amazon.co.jp/dp/4891000309/?tag=deko0f-22) | 1998/9/27 | | Inside Delphi | Ray Lischner(著), 光田 秀(訳) | [4756119514](https://www.amazon.co.jp/dp/4756119514/?tag=deko0f-22) | 1997/12/1 | | Win32 マルチスレッドプログラミング | James E. Beveridge, Robert Wiener (著), インフォビジョン (訳)| [4756114040](https://www.amazon.co.jp/dp/4756114040/?tag=deko0f-22) | 1997/9/1 | | Windows NT マルチスレッドプログラミング入門 | Thuan Q. Pham, Pankaj K. Garg (著), 川手 恭輔 (訳) | [4810189600](https://www.amazon.co.jp/dp/4810189600/?tag=deko0f-22) | 1996/12/20 | | [Windows 95 API バイブル <1>](https://www.shoeisha.co.jp/book/detail/9784881354308) | Richard J. Simon, Michael Gouker, Brian C. Barnes (著), スリーエーシステムズ (訳), 江藤ソフトオフィス (監) | [4881354302](https://www.amazon.co.jp/dp/4881354302/?tag=deko0f-22) | 1996/10/31 | | [マルチスレッドプログラミング入門](https://www.shoeisha.co.jp/book/detail/9784881354308) | Bil Lewis, Daniel J. Berg (著), 岩本 信一 (訳) | [4756116825](https://www.amazon.co.jp/dp/4756116825/?tag=deko0f-22) | 1996/9/31 | | ADVANCED WINDOWS NT | Jeffrey Richter (著), 梅原 系, 長尾 高弘, 鈴木 慎司 (訳) | [4756103014](https://www.amazon.co.jp/dp/4756103014/?tag=deko0f-22) | 1995/1/1 | **See also:** - [Inside Windows / Windows Internals の邦訳版 (Qiita)](./65d34a435f70630b12bd.md) # 索引 [ [← 10. ファイバー](./73b34d900385f286ee36.md) ] [ [↑ 目次へ](https://qiita.com/items/e8c1ff3a4c74e4c2a4f3) ] [^1]: 『並行動作プログラムの構造』には`「1974年に Al Hartman は Sequential Pascal を用いて、Concurrent Pascal と名付けた新しいプログラミング言語のコンパイラを作成した」` 、`「Sequential Pascal および Concurrent Pascal のコンパイラは Al Hartman と筆者によって半年で設計・実装した」`とあります。 [^2]: 阿部 隆 (1999).「Delphi マルチスレッドプログラミング 応用編」『Delphi マガジン』, vol.**5**, PS ネットワーク, pp.78-94. [^3]: 阿部 隆 (1999).「Delphi マルチスレッドプログラミング 実践編」『Delphi マガジン』, vol.**4**, PS ネットワーク, pp.58-73. [^4]: 阿部 隆 (1999).「Delphi マルチスレッドプログラミング 基礎編」『Delphi マガジン』, vol.**3**, PS ネットワーク, pp.85-101.