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?
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)
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
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
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
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?
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?
Popular Tags
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)
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.