IP Library › Granted Patent US 12,423,032
Granted Patent B2
US 12,423,032 · App. 18/737,740 · Granted Sep 23, 2025

Systems and methods for implementing and using a cross-process queue within a single computer

Inventors: Lawrence Edmund Lewis (Durham, NC); Mohammadreza Nazari (Wayne, PA); Amirhassan Fallah Dizche (Woburn, MA)
Assignee: SAS INSTITUTE INC.
G06F3/0659G06F3/0619G06F3/0673G06F9/4881G06F9/541
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,423,032
App. No.
18/737,740
Granted
Sep 23, 2025
Kind
B2
Abstract

A system, method, and computer-program product includes implementing a cross-process queue within a single computer that is configured to transfer a data block between an operating system process executing a write operation and an operating system process executing a read operation, initializing in-memory cell indices within the cross-process queue that include a write operation index tracking index values of one or more cells within the cross-process queue that are available to write and a read operation index tracking index values of one or more cells within the cross-process queue that are available to read, and implementing a cell synchronization data structure tracking states of a plurality of cells of the index of cells of the cross-process queue.

Claims (75)

1. A computer-program product embodied in a non-transitory machine-readable storage medium storing computer instructions that, when executed by one or more processors, perform operations comprising:

implementing a cross-process queue within a single computer that enables a transfer of data between a first operating system process and a second operating system process, wherein:

the first operating system process is created by executing a computer program written in a first computer language, and the second operating system process is created by executing a computer program written in a second computer language;

receiving, at the cross-process queue, a data block from the first operating system process based on an execution by the first operating system process of a write operation to a memory of the cross-process queue, wherein the data block is encoded in a data structure of the first computer language;

implementing a cell synchronization data structure tracking states of a plurality of cells of index of cells of the cross-process queue, wherein the cell synchronization data structure counts cells of the plurality of cells of the index of cells to determine available cells for the write operation and the read operation;

regulating a utilization of the cross-process queue for the first or second operating system process executing the write operation and read operation based on the count of cells of the index of cells that are available for the write operation and the read operation;

converting, by an interpreting application, the data block encoded in the data structure of the first computer language to a translated data block encoded in a data structure of the second computer language;

storing, within the memory of the cross-process queue, the translated data block based on the conversion of the data block; and

enabling a read access, by the second operating system process, to the translated data block stored within the memory of the cross-process queue.

2. The computer-program product according to claim 1 , wherein converting, by the interpreting application, the data block encoded in the data structure of the first computer language includes:

automatically converting one or more data types of the first computer language to one or more data types of the second computer language based on the receiving, at the cross-process queue, the data block from the first operating system process.

3. The computer-program product according to claim 1 , wherein converting, by the interpreting application, the data block encoded in the data structure of the first computer language includes:

automatically converting one or more objects of the first computer language to one or more objects of the second computer language based on the receiving, at the cross-process queue, the data block from the first operating system process.

4. The computer-program product according to claim 1 , wherein the first operating system process based on identifying the second computer language of the second operating system process, automatically connects to the interpreting application enabling the conversion of the data block during the write operation by the first operating system process to the memory of the cross-process queue.

5. The computer-program product according to claim 1 , wherein the interpreting application is implemented as a child process of the first operating system process.

6. The computer-program product according to claim 5 , wherein the interpreting application is extensible to interpreting a given data block encoded in the data structure of the first computer language to a target computer language of a plurality of computer languages based on identifying a computer language of a given operating system process that executes read operations in the target computer language.

7. The computer-program product according to claim 1 , wherein the memory of the cross-process queue comprises:

a plurality of cells of fixed length that are available for writing data to and available for reading from by each of the first operating system process and the second operating system process.

8. The computer-program product according to claim 7 , wherein data stored within each of the plurality of cells of the memory channel is encoded with a respective type safety header identifying a respective data type of a plurality of data types of an item of data stored within a respective cell of the plurality of cells.

9. The computer-program product according to claim 8 , wherein a given type safety header a given cell of the plurality of cells prohibits an attempted read operation of a given item of data stored within the given cell when the attempted read operation executes a read operation in a different data type than a data type identified by the given type safety header.

10. The computer-program product according to claim 8 , further comprising:

detecting an attempted read operation of a given data stored within a given cell of the plurality of cells when the attempted read operation executes a read operation in a different data type than a given data type identified by the type safety header;

generating a read exception based on the detection of the attempted read operation; and

automatically transforming the given data type of the type safety header of the given data to the different data type based on the read exception.

11. A computer-implemented method comprising:

implementing a cross-process queue within a single computer that enables a transfer of data between a first operating system process and a second operating system process, wherein:

the first operating system process is created by executing a computer program written in a first computer language, and the second operating system process is created by executing a computer program written in a second computer language;

receiving, at the cross-process queue, a data block from the first operating system process based on an execution by the first operating system process of a write operation to a memory of the cross-process queue, wherein the data block is encoded in a data structure of the first computer language;

implementing a cell synchronization data structure tracking states of a plurality of cells of index of cells of the cross-process queue, wherein the cell synchronization data structure counts cells of the plurality of cells of the index of cells to determine available cells for the write operation and the read operation;

regulating a utilization of the cross-process queue for the first or second operating system process executing the write operation and read operation based on the count of cells of the index of cells that are available for the write operation and the read operation;

converting, by an interpreting application, the data block encoded in the data structure of the first computer language to a translated data block encoded in a data structure of the second computer language;

storing, within the memory of the cross-process queue, the translated data block based on the conversion of the data block; and

enabling a read access, by the second operating system process, to the translated data block stored within the memory of the cross-process queue.

12. The computer-implemented method according to claim 11 , wherein converting, by the interpreting application, the data block encoded in the data structure of the first computer language includes:

automatically converting one or more data types of the first computer language to one or more data types of the second computer language based on the receiving, at the cross-process queue, the data block from the first operating system process.

13. The computer-implemented method according to claim 11 , wherein converting, by the interpreting application, the data block encoded in the data structure of the first computer language includes:

automatically converting one or more objects of the first computer language to one or more objects of the second computer language based on the receiving, at the cross-process queue, the data block from the first operating system process.

14. The computer-implemented method according to claim 11 , wherein the first operating system process based on identifying the second computer language of the second operating system process, automatically connects to the interpreting application enabling the conversion of the data block during the write operation by the first operating system process to the memory of the cross-process queue.

15. The computer-implemented method according to claim 11 , wherein the interpreting application is implemented as a child process of the first operating system process.

16. The computer-implemented method according to claim 15 , wherein the interpreting application is extensible to interpreting a given data block encoded in the data structure of the first computer language to a target computer language of a plurality of computer languages based on identifying a computer language of a given operating system process that executes read operations in the target computer language.

17. The computer-implemented method according to claim 11 , wherein the memory of the cross-process queue comprises:

a plurality of cells of fixed length that are available for writing data to and available for reading from by each of the first operating system process and the second operating system process.

18. The computer-implemented method according to claim 17 , wherein data stored within each of the plurality of cells of the memory channel is encoded with a respective type safety header identifying a respective data type of a plurality of data types of an item of data stored within a respective cell of the plurality of cells.

19. The computer-implemented method according to claim 18 , wherein a given type safety header a given cell of the plurality of cells prohibits an attempted read operation of a given item of data stored within the given cell when the attempted read operation executes a read operation in a different data type than a data type identified by the given type safety header.

20. The computer-implemented method according to claim 18 , further comprising:

detecting an attempted read operation of a given data stored within a given cell of the plurality of cells when the attempted read operation executes a read operation in a different data type than a given data type identified by the type safety header;

generating a read exception based on the detection of the attempted read operation; and

automatically transforming the given data type of the type safety header of the given data to the different data type based on the read exception.

21. A computer-implemented system comprising:

one or more processors;

a memory;

a computer-readable medium operably coupled to the one or more processors, the computer-readable medium having computer-readable instructions stored thereon that, when executed by the one or more processors, cause a computing device to perform operations comprising:

implementing a cross-process queue within a single computer that enables a transfer of data between a first operating system process and a second operating system process, wherein:

the first operating system process is created by executing a computer program written in a first computer language, and the second operating system process is created by executing a computer program written in a second computer language;

receiving, at the cross-process queue, a data block from the first operating system process based on an execution by the first operating system process of a write operation to a memory of the cross-process queue, wherein the data block is encoded in a data structure of the first computer language;

implementing a cell synchronization data structure tracking states of a plurality of cells of index of cells of the cross-process queue, wherein the cell synchronization data structure counts cells of the plurality of cells of the index of cells to determine available cells for the write operation and the read operation;

regulating a utilization of the cross-process queue for the first or second operating system process executing the write operation and read operation based on the count of cells of the index of cells that are available for the write operation and the read operation;

converting, by an interpreting application, the data block encoded in the data structure of the first computer language to a translated data block encoded in a data structure of the second computer language;

storing, within the memory of the cross-process queue, the translated data block based on the conversion of the data block; and

enabling a read access, by the second operating system process, to the translated data block stored within the memory of the cross-process queue.

22. The computer-implemented system according to claim 21 , wherein converting, by the interpreting application, the data block encoded in the data structure of the first computer language includes:

automatically converting one or more data types of the first computer language to one or more data types of the second computer language based on the receiving, at the cross-process queue, the data block from the first operating system process.

23. The computer-implemented system according to claim 21 , wherein converting, by the interpreting application, the data block encoded in the data structure of the first computer language includes:

automatically converting one or more objects of the first computer language to one or more objects of the second computer language based on the receiving, at the cross-process queue, the data block from the first operating system process.

24. The computer-implemented system according to claim 21 , wherein the first operating system process based on identifying the second computer language of the second operating system process, automatically connects to the interpreting application enabling the conversion of the data block during the write operation by the first operating system process to the memory of the cross-process queue.

25. The computer-implemented system according to claim 21 , wherein the interpreting application is implemented as a child process of the first operating system process.

26. The computer-implemented system according to claim 25 , wherein the interpreting application is extensible to interpreting a given data block encoded in the data structure of the first computer language to a target computer language of a plurality of computer languages based on identifying a computer language of a given operating system process that executes read operations in the target computer language.

27. The computer-implemented system according to claim 21 , wherein the memory of the cross-process queue comprises:

a plurality of cells of fixed length that are available for writing data to and available for reading from by each of the first operating system process and the second operating system process.

28. The computer-implemented system according to claim 27 , wherein data stored within each of the plurality of cells of the memory channel is encoded with a respective type safety header identifying a respective data type of a plurality of data types of an item of data stored within a respective cell of the plurality of cells.

29. The computer-implemented system according to claim 28 , wherein a given type safety header a given cell of the plurality of cells prohibits an attempted read operation of a given item of data stored within the given cell when the attempted read operation executes a read operation in a different data type than a data type identified by the given type safety header.

30. The computer-implemented system according to claim 28 , further comprising:

detecting an attempted read operation of a given data stored within a given cell of the plurality of cells when the attempted read operation executes a read operation in a different data type than a given data type identified by the type safety header;

generating a read exception based on the detection of the attempted read operation; and

automatically transforming the given data type of the type safety header of the given data to the different data type based on the read exception.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2024
From: LEWIS, LAWRENCE EDMUND; NAZARI, MOHAMMADREZA; DIZCHE, AMIRHASSAN FALLAH
To: SAS INSTITUTE INC.
Reel/Frame 067674/0183 →
Continuity (3)
Continuation 18737592 · Jun 7, 2024
Provisional Application 63534326 · Aug 23, 2023
Related Publication 20250068490A1 · Feb 27, 2025
References Cited (60)
US 5812843A · Yamazaki · 1998 [cited by examiner]
US 6182158B1 · Kougiouris · 2001 [cited by examiner]
US 6757904B1 · Woodruff · 2004 [cited by examiner]
US 7380073B2 · Shorb · 2008 [cited by applicant]
US 7594091B2 · Shorb · 2009 [cited by applicant]
US 7627710B1 · Todd et al. · 2009 [cited by applicant]
US 8429675B1 · Radhakrishnan · 2013 [cited by examiner]
US 8572617B2 · Shorb · 2013 [cited by applicant]
US 9213586B2 · Shorb · 2015 [cited by applicant]
US 10459849B1 · Shorb et al. · 2019 [cited by applicant]
US 10803023B2 · Ghazaleh · 2020 [cited by applicant]
US 10803024B2 · Ghazaleh · 2020 [cited by applicant]
US 11042549B2 · Ghazaleh · 2021 [cited by applicant]
US 11099899B2 · Shorb · 2021 [cited by applicant]
US 11379404B2 · Schmidt · 2022 [cited by examiner]
US 20020152280A1 · Winkeler · 2002 [cited by examiner]
US 20040015979A1 · Shen · 2004 [cited by examiner]
US 20080147213A1 · Omiya et al. · 2008 [cited by applicant]
US 20090282392A1 · Russell · 2009 [cited by examiner]
US 20120005691A1 · Wong · 2012 [cited by examiner]
US 20130246714A1 · Lv et al. · 2013 [cited by applicant]
US 20140006718A1 · Ramani-Augustin et al. · 2014 [cited by applicant]
US 20140215181A1 · Svendsen · 2014 [cited by applicant]
US 20150046661A1 · Gathala et al. · 2015 [cited by applicant]
US 20160092357A1 · Rehana et al. · 2016 [cited by applicant]
US 20170017412A1 · Luan et al. · 2017 [cited by applicant]
US 20170026459A1 · Trott · 2017 [cited by examiner]
US 20190012269A1 · Bubb et al. · 2019 [cited by applicant]
US 20190196745A1 · Persson et al. · 2019 [cited by applicant]
US 20190370288A1 · Bequet et al. · 2019 [cited by applicant]
US 20220342573A1 · Cao et al. · 2022 [cited by applicant]
US 20240176603A1 · Raedle · 2024 [cited by examiner]
CN 100673497 · 2009 [cited by examiner]
CN 101477511B · 2010 [cited by examiner]
CN 101847105A · 2010 [cited by examiner]
CN 110347517A · 2019 [cited by examiner]
CN 115437719A · 2022 [cited by examiner]
WO WO9912095A1 · 1999 [cited by examiner]
WO WO2004088508A2 · 2004 [cited by examiner]
WO WO2013059905A1 · 2013 [cited by examiner]
Mod Python, “4.1 Multiple Interpreters,” 2024 pp. 1-1. [cited by applicant]
Github, “Multicorn is a Multi-Interpreter Server for Python,” 2024, pp. 1-3. [cited by applicant]
IN202421040823A, “Application not yet published”, pp. 1-15. [cited by applicant]
Python Enhancement Proposals, “Pep 554—Multiple Interpreters in the Stdlib,” Sep. 5, 2017 , pp. 1-40. [cited by applicant]
Python Enhancement Proposals, “Pep 734—Multiple Interpreters in the Stdlib,” Nov. 6, 2023 , pp. 1-23. [cited by applicant]
Mouse Vs Python, “Python 3.13 Allows Disabling of the GIL + Subinterpreters.,” Mar. 14, 2024, pp. 1-6. [cited by applicant]
Stinner et al., “The 2021 Python Language Summit: Progress on Running Multiple Python interpreters in Parallel in the Same Process,” Python Software Foundation, May 16, 2021, pp. 1-3. [cited by applicant]
Github, “Running Python Parallel Applications with Sub Interpreters,” Nov. 17, 2023, pp. 1-19. [cited by applicant]
Microsoft, “Select and Install Python Interpreters—Visual Studio (Windows),” 2022, pp. 1-4. [cited by applicant]
Jake Edge, “Subinterpreters for Python,” lwn.net, May 13, 2020, pp. 1-10. [cited by applicant]
Nathan Ojaokomo, “What is a Python Interpreter,” Jan. 4, 2023, pp. 1-13. [cited by applicant]
Pypi, “Ipcquene 0.9.7,” Sep. 11, 2021, pp. 1-4. [cited by applicant]
Ipcquene, “Welcome to Ipcquene's Documentation,” 2017, pp. 1-5. [cited by applicant]
Boost Software, “Class Template Quene,” 2008, pp. 1-6. [cited by applicant]
TU/e Eindhoven University of Technology, “Co-operating Sequential Processes,” Jan. 1, 1968, pp. 1-88. [cited by applicant]
E.W. Dijkstra Archive, “Cooperating Sequential Processes,” Aug. 11, 2010, pp. 1-31. [cited by applicant]
readme.md, “A Fast Multi-Producer, Multi-Consumer Lock-Free Concurrent Quene for C++11, ”Jun. 10, 2023 , pp. 1-13. [cited by applicant]
readme.md, “A Bounded Single-Producer Single-Consumer Wait-Free and Lock-Free Quene Written in C++11,” Jun. 22, 2021, pp. 1-7. [cited by applicant]
Intel, “Intel oneAPI Threading Building Blocks Documentation.,” Sep. 30, 2022, pp. 1-3. [cited by applicant]
Baeldung, “Producer-Consumer Problem with Example in Java,” Aug. 29, 2023, pp. 1-19. [cited by applicant]