[#BloombergLP-bdlmt-Throttle-initialize-09]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlmt.adoc[bdlmt]::xref:BloombergLP/bdlmt/Throttle.adoc[Throttle]::initialize
:relfileprefix: ../../../
:mrdocs:

Initialize this `Throttle` to limit the average period of actions permitted to the specified `nanosecondsPerAction`, and the maximum number of simultaneous actions allowed to the specified `maxSimultaneousActions`&period; Optionally specify `clockType` to indicate the system clock that will be used to measure time (see &lsqb;&rsqb;Clock&hyphen;Types))&period; If `clockType` is not supplied the monotonic system clock is used&period; The configured throttle will over time limit the average number of actions permitted to a rate of &grave;1 &sol; nanosecondsPerAction`&period; If `maxSimultaneousActions&grave; is 0, the throttle will be configured to permit no actions, otherwise if `nanosecondsPerAction` is 0, the throttle will be configured to permit all actions&period; The behavior is undefined unless `0 &lt;&equals; nanosecondsPerAction`, `0 &lt;&equals; maxSimultaneousActions`, `0 &lt; nanosecondsPerAction &verbar;&verbar; 0 &lt; maxSimultaneousActions`, and `maxSimultaneousActions &ast; nanosecondsPerActionLeak &lt;&equals; LLONG&lowbar;MAX`&period; Note that the behavior for other methods is undefined unless this `Throttle` is initialized (either using one of the overloads of this function, or a `BDLMT&lowbar;THROTTLE&lowbar;INIT` macro) prior to being called&period;

== Synopsis

Declared in `&lt;bdlmt&lowbar;throttle&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
void
initialize(
    int maxSimultaneousActions,
    xref:BloombergLP/bdlmt/Throttle.adoc[Int64] nanosecondsPerAction,
    xref:BloombergLP/bsls/SystemClockType/Enum.adoc[bsls::SystemClockType::Enum] clockType = bsls&colon;&colon;SystemClockType&colon;&colon;e&lowbar;MONOTONIC);
----


[.small]#Created with https://www.mrdocs.com[MrDocs]#
