The docs says that locking from a thread and unlocking from another a rwlock results in undefined behaviour. I have an array and two threads, one allocating it and one deallocating it, this happens in a cycle, and there are also some threads reading/writing in it, but they never overlap so no synchronization is needed there. The problem is the read/write threads still try to use the array in the timeframe between dealloc - alloc. I was thinking of using a read lock for the read/write threads and lock the array for writing in the dealloc thread and unlocking writing in alloc thread. But this results in undefined behavior since they happen on different threads. What would be the right approach in this case?
pthread rwlock lock/unlock from different threads
631 Views Asked by Jelly At
1
There are 1 best solutions below
Related Questions in MULTITHREADING
- new thread blocks main thread
- WPF MessageBox Cancel checkbox check
- How to avoid concurrent access to a resource?
- run oncomplete event in async
- Threading Segfault when reading members
- Function timeouts in C and thread
- How are multiple requests to Task.Run handled from a resource management standpoint?
- Acumatica perfomance with threads
- Wait and Notify in Java threads for a given interval
- Different behavior of async with Visual Studio 2013(Windows8.1) and GCC 4.9(Ubuntu14.10)
- How to return blocking queue to the right object?
- background thread using Task.Run
- deletion and cleanup of worker thread in Qt crashes
- Pipeline-like operation using TChan
- implementing in app purchase on android
Related Questions in SYNCHRONIZATION
- How to avoid concurrent access to a resource?
- Multiple jQuery slideshows won't stay in sync
- How to ensure data synchronization across threads within a "safe" area (e.g not in a critical section) without locking everything
- Multiple locks of one method from multiple objects
- laravel sync() equivalent for OneToMany relation
- git - Why reset --hard seems to be always needed
- LDAP Directory Synchronization Tools
- Migrating Nexus repository manager
- Implement two way syncing with Mysql In Iphone
- spin_lock before writing status register
- What's the best way to implement a single consumer, multiple producer scenario using Python?
- Why only mark() and reset() method are synchronized in java.io.InputStream?
- Any tools available for auto syncing the .js files
- Order of execution of Threads waiting for a synchronised block
- No Synchronize Model with Database in Mysql Workbench
Related Questions in PTHREADS
- Multithreaded program not producing desired output
- Blocking in pthread_join()
- Unix c program to calculate pi using threads
- How to process A direct send message to a thread of process B?
- PThread robust mutex not working
- How do I install pthreads on Debian?
- How to make a robust mutex on AIx [7.1]
- Two-Lock Concurrent Queue Algorithm implementation issue
- Parallel QuickSort C implementation
- How to control the thread of child process
- pthread process shared mutex deadlock
- pthreads SIGEV_THREAD and async-safe function calls
- Cannot assign value to array using PHP pthreads
- Android NDK and pthread
- Pthread join segmentation fault
Related Questions in POSIX
- How to write data to stdin of the first process in a Python shell pipeline?
- C - does read() add a '\0'?
- What does a POSIX interface refer to in terms of microkernels?
- mq_timedsend() returns error 14 "bad address"
- Posix message queues and the command line?
- Copying existing function into memory buffer
- Ghost variable "idle" in terminal/cygwin?
- converting "1984-03-25 02:00:00" to POSIX gives NA
- Issue with pthread_setschedparam, system hangs
- tee stdout and stderr independently, without adding jitter
- POSIX-compliant file locking (within a single process)?
- Linux : pthread_cond_signal() is not working inside a Signal Handler()
- Compiling GRUB on Cygwin (64 bit)
- Counting bytes received by posix read()
- Bash: "invalid number" error when passing array elements value to variable
Related Questions in RWLOCK
- how to init rwlock_t
- RwLockWriteGuard and RwLockReadGuard in same variable?
- Rust lazy_static variable RwLock access
- Recursive pthread_rwlock_rdlock on Mac OS X/Darwin
- pthread rwlock lock/unlock from different threads
- Is it safe to make RefCell Sync+Send if the data it contains is protected by RwLock?
- Shared memory in Rust
- Wrapping RwLock<T> in rust c++ interface?
- Cursor of HashMap records with RwLockGuard in Rust
- May periodic read locks in multiple threads completely stall writing thread for a long time?
- Sharing a reference in multiple threads inside a function
- Can I use atomics in an asynchronous context?
- Returning a RWLockReadGuard independently from a method
- RWLock vs Mutex when multiple readers
- RwLock in a thread::spawn doesn't release the lock
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You need some variable that stores the state. You can protect that variable with a lock. So when a thread needs to check or change the state, it acquires the lock, checks or changes the state, and then releases the lock.