Sponsored Content
Top Forums Programming In unix how we can test or check race condition in c program by using multi threads Post 302291240 by redoubtable on Wednesday 25th of February 2009 04:05:50 AM
Old 02-25-2009
How are you creating the race condition?

You can easily prevent race conditions by creating a temporary file and using rename() to replace the file after checking the timestamp of the original file.

If only your program is changing the file, you can also use flock(fd, LOCK_EX) so that if another instance of your program also uses flock() it will block until the other instance finishes processing or calls flock(fd, LOCK_UN).

Keep in mind that flock() doesn't prevent file unlink()ing.
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

race condition with wait() function

Hi, I'm currently writing a bash script, that starts multiple threads: ____________________ #!/bin/bash loop=0 while((loop!=10)) do thread & ((loop++)) done #wait for all sub-processes (thread) to finish wait ___________________ Now I want to know, what happens, if a... (2 Replies)
Discussion started by: tho99
2 Replies

2. Linux

In unix how we can test or check race condition in c program by using multi threads

In unix how we can test or check race condition in any c program by using multi thread programming (1 Reply)
Discussion started by: afroze
1 Replies

3. UNIX for Dummies Questions & Answers

In unix how we can test or check race condition in a c program by using multi threads

In unix how we can test or check race condition in any c program by using multi thread programming (1 Reply)
Discussion started by: afroze
1 Replies

4. Programming

In unix how we can test or check race condition in a c program by using multi threads

In unix how we can test or check race condition in any c program by using multi thread programming (1 Reply)
Discussion started by: afroze
1 Replies

5. Programming

Race condition with PTY

I've been experimenting with pseudo-terminals and found something I don't quite understand. Writing an EOF character to the master end doesn't work quite as I expect. Once I've written any other data, the master pty seems to treat a single ^D as a seperator, i.e. writing "abcabc" would let cat do... (1 Reply)
Discussion started by: Corona688
1 Replies

6. Shell Programming and Scripting

How to check weather a string is like test* or test* ot *test* in if condition

How to check weather a string is like test* or test* ot *test* in if condition (5 Replies)
Discussion started by: johnjerome
5 Replies

7. Programming

problem about race condition

Hi all, i'm reading Andrew S.Tanenbaum's book --- Modern Operating System.At the part of discussing race condition.And the author gives a solution with using the TSL instruction,say that one process must call the enter_region function before entering the critical regions and call the leave_region... (0 Replies)
Discussion started by: homeboy
0 Replies

8. Shell Programming and Scripting

Shell script that check the argument passed to it and prints error if test condition is not met

I want to make a script that check for the argument passed to it and generates an error in case any character/string argument passed to it. I am using below code, but its not working. can anyone help. #!/bin/bash if ]; then echo 'An integer argument is passed to the script hence... (3 Replies)
Discussion started by: mukulverma2408
3 Replies

9. Shell Programming and Scripting

if condition to check the hostname (unix)

I want to know the if condition in checking the hostname in unix and then running a cron job (all in a single line) Thanks (2 Replies)
Discussion started by: prash358
2 Replies
FLOCK(3)								 1								  FLOCK(3)

flock - Portable advisory file locking

SYNOPSIS
bool flock (resource $handle, int $operation, [int &$wouldblock]) DESCRIPTION
flock(3) allows you to perform a simple reader/writer model which can be used on virtually every platform (including most Unix derivatives and even Windows). On versions of PHP before 5.3.2, the lock is released also by fclose(3) (which is also called automatically when script finished). PHP supports a portable way of locking complete files in an advisory way (which means all accessing programs have to use the same way of locking or it will not work). By default, this function will block until the requested lock is acquired; this may be controlled with the LOCK_NB option documented below. PARAMETERS
o $handle -A file system pointer resource that is typically created using fopen(3). o $operation -$operation is one of the following: o LOCK_SH to acquire a shared lock (reader). o LOCK_EX to acquire an exclusive lock (writer). o LOCK_UN to release a lock (shared or exclusive). It is also possible to add LOCK_NB as a bitmask to one of the above operations if you don't want flock(3) to block while locking. o $wouldblock - The optional third argument is set to 1 if the lock would block (EWOULDBLOCK errno condition). RETURN VALUES
Returns TRUE on success or FALSE on failure. CHANGELOG
+--------------+---------------------------------------------------+ | Version | | | | | | | Description | | | | +--------------+---------------------------------------------------+ |5.5.22, 5.6.6 | | | | | | | Added support for the $wouldblock parameter on | | | Windows. | | | | | 5.3.2 | | | | | | | The automatic unlocking when the file's resource | | | handle is closed was removed. Unlocking now | | | always has to be done manually. | | | | +--------------+---------------------------------------------------+ EXAMPLES
Example #1 flock(3) example <?php $fp = fopen("/tmp/lock.txt", "r+"); if (flock($fp, LOCK_EX)) { // acquire an exclusive lock ftruncate($fp, 0); // truncate file fwrite($fp, "Write something here "); fflush($fp); // flush output before releasing the lock flock($fp, LOCK_UN); // release the lock } else { echo "Couldn't get the lock!"; } fclose($fp); ?> Example #2 flock(3) using the LOCK_NB option <?php $fp = fopen('/tmp/lock.txt', 'r+'); /* Activate the LOCK_NB option on an LOCK_EX operation */ if(!flock($fp, LOCK_EX | LOCK_NB)) { echo 'Unable to obtain lock'; exit(-1); } /* ... */ fclose($fp); ?> NOTES
Note flock(3) uses mandatory locking instead of advisory locking on Windows. Mandatory locking is also supported on Linux and System V based operating systems via the usual mechanism supported by the fcntl() system call: that is, if the file in question has the set- gid permission bit set and the group execution bit cleared. On Linux, the file system will also need to be mounted with the mand option for this to work. Note Because flock(3) requires a file pointer, you may have to use a special lock file to protect access to a file that you intend to truncate by opening it in write mode (with a "w" or "w+" argument to fopen(3)). Note May only be used on file pointers returned by fopen(3) for local files, or file pointers pointing to userspace streams that imple- ment the streamWrapper.stream_lock(3) method. Warning Assigning another value to $handle argument in subsequent code will release the lock. Warning On some operating systems flock(3) is implemented at the process level. When using a multithreaded server API like ISAPI you may not be able to rely on flock(3) to protect files against other PHP scripts running in parallel threads of the same server instance! flock(3) is not supported on antiquated filesystems like FAT and its derivates and will therefore always return FALSE under this environments (this is especially true for Windows 98 users). PHP Documentation Group FLOCK(3)
All times are GMT -4. The time now is 03:01 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy