Lines Matching +full:in +full:- +full:application

1 .\" -*- mode: troff; coding: utf-8 -*-
19 .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
29 .\" Escape single quotes in literal strings from groff's Unicode transform.
35 .\" entries marked with X<> in POD. Of course, you'll have to process the
36 .\" output yourself in some meaningful fashion.
57 .IX Title "OPENSSL-QUIC-CONCURRENCY 7ossl"
58 .TH OPENSSL-QUIC-CONCURRENCY 7ossl 2025-09-30 3.5.4 OpenSSL
60 .\" way too many mistakes in technical documents.
64 openssl\-quic\-concurrency \- OpenSSL QUIC Concurrency Model
80 An explicit QUIC domain is created by and visible to the application as a QUIC
85 creation of a QUIC connection or listener SSL object; the application does not
90 application. Applications can use an implicit QUIC domain for ease of use and to
94 processing model is the same and the application must choose an appropriate
103 The \fBSingle-Threaded Concurrency Model (SCM)\fR, which supports only
104 application-synchronised single-threaded usage.
106 The \fBContentive Concurrency Model (CCM)\fR, which supports multi-threaded usage.
108 The \fBThread-Assisted Concurrency Model (TACM)\fR, which also supports
109 multi-threaded usage and provides assistance to an application for handling QUIC
114 The \fBSingle-Threaded Concurrency Model (SCM)\fR performs no locking or
115 synchronisation. It is entirely up to the application to synchronise access to
118 This concurrency model is also useful for an application which wants to use the
122 API calls to SSL objects in a QUIC domain. This provides automatic
123 synchronisation for multi-threaded usage of QUIC objects. For example, different
124 QUIC stream SSL objects in the same QUIC connection can be safely accessed from
127 This concurrency model adds the overhead of locking over the Single-Threaded
128 Concurrency Model in order to support multi-threaded usage, but provides limited
129 performance in highly contended multi-threaded usage due to its simple approach.
131 which spend the majority of their time in application logic and not in QUIC I/O
137 The \fBThread-Assisted Concurrency Model (TACM)\fR is identical to the Contentive
138 Concurrency Model except that a thread is spun up in the background to ensure
139 that QUIC timer events are handled in a timely fashion. This ensures that QUIC
140 timeout events are handled even if an application does not periodically call
141 into the QUIC domain to ensure that any outstanding QUIC-related timer or
147 used with a \fBSSL_CTX\fR. Using \fBOSSL_QUIC_client_method\fR\|(3) results in a default
149 results in a default concurrency model of TACM.
151 Additional concurrency models may be offered in future releases of OpenSSL.
155 calls, where application-level I/O calls (for example, to \fBSSL_read_ex\fR\|(3) or
157 serviced. This includes the use of \fBSSL_poll\fR\|(3) in a blocking fashion.
159 Supporting blocking API calls reliably with multi-threaded usage requires the
162 optional and may need to be explicitly requested by an application depending on
170 which is only reliable under single-threaded usage. This functionality is always
171 available in the Single-Threaded Concurrency Model (SCM), where it works
175 default concurrency model if the application does not explicitly specify a
177 Mode, and its usage is not recommended for multi-threaded applications.
182 A purely single-threaded application, or an application which wishes to use
186 An application which wants to engage in multi-threaded usage of different QUIC
187 connections or streams in the same QUIC domain should a) select the CCM or TACM
188 concurrency model and b) explicitly opt in or out of blocking I/O support
189 (depending on whether the application wishes to make blocking I/O calls),
192 An application should select the CCM concurrency model if the application can
194 the application can guarantee that the timeout returned by
195 \&\fBSSL_get_event_timeout\fR\|(3) will be handled). If an application is unable to do
206 Specifying this flag configures the Single-Threaded Concurrency Model (SCM).
213 Specifying this flag configures the Thread-Assisted Concurrency Model (TACM).
228 Mutually exclusive flag combinations result in an error (for example, combining
247 Thread-Assisted Concurrency Model (TACM) is used with the
250 Otherwise, if OpenSSL was built without threading support, the Single-Threaded
261 application may specify one or more of the domain flags above to ensure
272 least one socket, socket-like OS handle or file descriptor must be allocated to
273 allow one thread to wake other threads which may be blocking in calls to OS
277 If the Thread-Assisted Concurrency Model (TACM) is selected, a background thread
285 Thread-Assisted Concurrency Model.
287 The internal consumption by OpenSSL of sockets, socket-like OS handles or file
288 descriptors, or other resources as needed to support inter-thread notification,
289 is unspecified under the Thread-Assisted Concurrency Model or when using
300 supported poll descriptors. See \fBopenssl\-quic\fR\|(7) for details.
306 \&\fBopenssl\-quic\fR\|(7), \fBSSL_handle_events\fR\|(3), \fBSSL_get_event_timeout\fR\|(3),
311 Copyright 2024\-2025 The OpenSSL Project Authors. All Rights Reserved.
314 this file except in compliance with the License. You can obtain a copy
315 in the file LICENSE in the source distribution or at