=head1 Name
SPVM::Document::NativeAPI::Mutex - Mutex Native APIs
=head1 Description
The mutex native APIs in L<SPVM> are the APIs
for
mutex.
=head1 Usage
SPVM_API_MUTEX* api_mutex = env->api->mutex;
void* mutex = api_mutex->new_instance();
api_mutex->
lock
(env, stack, mutex);
api_mutex->unlock(env, stack, mutex);
api_mutex->free_instance(mutex);
=head1 Details
=head1 Native APIs
=head2 new_instance
C<void* (
*new_instance
)(L<SPVM_ENV* env|SPVM::Document::NativeClass/
"Runtime Environment"
>, L<SPVM_VALUE* stack|SPVM::Document::NativeClass/
"Runtime Stack"
>);>
Creates a new mutex and initialize it, and returns it.
=head2 free_instance
C<void (
*free_instance
)(L<SPVM_ENV* env|SPVM::Document::NativeClass/
"Runtime Environment"
>, L<SPVM_VALUE* stack|SPVM::Document::NativeClass/
"Runtime Stack"
>, void* mutex);>
Destroys the mutex I<mutex> and frees it.
=head2
lock
C<void (
*lock
)(L<SPVM_ENV* env|SPVM::Document::NativeClass/
"Runtime Environment"
>, L<SPVM_VALUE* stack|SPVM::Document::NativeClass/
"Runtime Stack"
>, void* mutex);>
Locks the mutex I<mutex>.
Calls the L<pthread_rwlock_wrlock|https://linux.
die
.net/man/3/pthread_rwlock_wrlock> function in Linux and UNIX.
=head2 unlock
C<void (
*unlock
)(L<SPVM_ENV* env|SPVM::Document::NativeClass/
"Runtime Environment"
>, L<SPVM_VALUE* stack|SPVM::Document::NativeClass/
"Runtime Stack"
>, void* mutex);>
Unlocks the mutex I<mutex>.
Calls the L<pthread_rwlock_unlock|https://linux.
die
.net/man/3/pthread_rwlock_unlock> function in Linux and UNIX.
=head2 reader_lock
C<void (
*reader_lock
)(L<SPVM_ENV* env|SPVM::Document::NativeClass/
"Runtime Environment"
>, L<SPVM_VALUE* stack|SPVM::Document::NativeClass/
"Runtime Stack"
>, void* mutex);>
Locks the mutex I<mutex>
for
reading.
Calls the L<pthread_rwlock_rdlock|https://linux.
die
.net/man/3/pthread_rwlock_rdlock> function in Linux and UNIX.
=head2 reader_unlock
C<void (
*reader_unlock
)(L<SPVM_ENV* env|SPVM::Document::NativeClass/
"Runtime Environment"
>, L<SPVM_VALUE* stack|SPVM::Document::NativeClass/
"Runtime Stack"
>, void* mutex);>
Unlocks the mutex I<mutex>
for
reading.
Calls the L<pthread_rwlock_unlock|https://linux.
die
.net/man/3/pthread_rwlock_unlock> function in Linux and UNIX.
=head1 Native API IDs
0 new_instance
1 free_instance
2
lock
3 unlock
4 reader_lock
5 reader_unlock
=head1 See Also
=over 2
=item * L<SPVM::Document::NativeAPI>
=item * L<SPVM::Document::NativeClass>
=item * L<SPVM::Document>
=back
=head1 Copyright & License
Copyright (c) 2023 Yuki Kimoto
MIT License