A quick note:
“In the resource-guard-thread pattern, resource-guard threads represent resources. Such threads are arranged in a virtual assembly line and connected by queues implemented as safe objects” (Saden, 2011)
By the definition above, the search and insertion threads have exclusive data to perform subdivision and legalization through an insertion point, not a queue, thus this is a resource-user thread pattern.
“As long as each resource user has exclusive access to no more than one resource at a time, the designer can usually choose between a solution with resource-guard threads and one with resource threads. In this sense, the two patterns are dual.” (Saden, 2011)
A dual solution would look like: The search and insertion threads would return an index to a safe object, which would house all the data. The data can then be a queue from in order to proceed with step two which is subdivision and legalization.
Reference
- Sandén, B. I. (2011-01-14). Design of Multithreaded Software: The Entity-Life Modeling Approach, 1st Edition. [VitalSource Bookshelf Online]. Retrieved from https://bookshelf.vitalsource.com/#/books/9781119143086/