⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddoyscript.tcl

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 TCL
字号:
# See the file LICENSE for redistribution information.## Copyright (c) 1996-2002#	Sleepycat Software.  All rights reserved.## $Id: ddoyscript.tcl,v 11.6 2002/02/20 16:35:18 sandstro Exp $## Deadlock detector script tester.# Usage: ddoyscript dir lockerid numprocs# dir: DBHOME directory# lockerid: Lock id for this locker# numprocs: Total number of processes running# myid: id  of this process --#	the order that the processes are created is the same#	in which their lockerid's were allocated so we know#	that there is a locker age relationship that is isomorphic#	with the order releationship of myid's.source ./include.tclsource $test_path/test.tclsource $test_path/testutils.tclset usage "ddoyscript dir lockerid numprocs oldoryoung"# Verify usageif { $argc != 5 } {	puts stderr "FAIL:[timestamp] Usage: $usage"	exit}# Initialize argumentsset dir [lindex $argv 0]set lockerid [ lindex $argv 1 ]set numprocs [ lindex $argv 2 ]set old_or_young [lindex $argv 3]set myid [lindex $argv 4]set myenv [berkdb_env -lock -home $dir -create -mode 0644]error_check_bad lock_open $myenv NULLerror_check_good lock_open [is_substr $myenv "env"] 1# There are two cases here -- oldest/youngest or a ring locker.if { $myid == 0 || $myid == [expr $numprocs - 1] } {	set waitobj NULL	set ret 0	if { $myid == 0 } {		set objid 2		if { $old_or_young == "o" } {			set waitobj [expr $numprocs - 1]		}	} else {		if { $old_or_young == "y" } {			set waitobj 0		}		set objid 4	}	# Acquire own read lock	if {[catch {$myenv lock_get read $lockerid $myid} selflock] != 0} {		puts $errorInfo	} else {		error_check_good selfget:$objid [is_substr $selflock $myenv] 1	}	# Acquire read lock	if {[catch {$myenv lock_get read $lockerid $objid} lock1] != 0} {		puts $errorInfo	} else {		error_check_good lockget:$objid [is_substr $lock1 $myenv] 1	}	tclsleep 10	if { $waitobj == "NULL" } {		# Sleep for a good long while		tclsleep 90	} else {		# Acquire write lock		if {[catch {$myenv lock_get write $lockerid $waitobj} lock2]		    != 0} {			puts $errorInfo			set ret ERROR		} else {			error_check_good lockget:$waitobj \			    [is_substr $lock2 $myenv] 1			# Now release it			if {[catch {$lock2 put} err] != 0} {				puts $errorInfo				set ret ERROR			} else {				error_check_good lockput:oy:$objid $err 0			}		}	}	# Release self lock	if {[catch {$selflock put} err] != 0} {		puts $errorInfo		if { $ret == 0 } {			set ret ERROR		}	} else {		error_check_good selfput:oy:$myid $err 0		if { $ret == 0 } {			set ret 1		}	}	# Release first lock	if {[catch {$lock1 put} err] != 0} {		puts $errorInfo		if { $ret == 0 } {			set ret ERROR		}	} else {		error_check_good lockput:oy:$objid $err 0		if { $ret == 0 } {			set ret 1		}	}} else {	# Make sure that we succeed if we're locking the same object as	# oldest or youngest.	if { [expr $myid % 2] == 0 } {		set mode read	} else {		set mode write	}	# Obtain first lock (should always succeed).	if {[catch {$myenv lock_get $mode $lockerid $myid} lock1] != 0} {		puts $errorInfo	} else {		error_check_good lockget:$myid [is_substr $lock1 $myenv] 1	}	tclsleep 30	set nextobj [expr $myid + 1]	if { $nextobj == [expr $numprocs - 1] } {		set nextobj 1	}	set ret 1	if {[catch {$myenv lock_get write $lockerid $nextobj} lock2] != 0} {		if {[string match "*DEADLOCK*" $lock2] == 1} {			set ret DEADLOCK		} else {			set ret ERROR		}	} else {		error_check_good lockget:$nextobj [is_substr $lock2 $myenv] 1	}	# Now release the first lock	error_check_good lockput:$lock1 [$lock1 put] 0	if {$ret == 1} {		error_check_bad lockget:$nextobj $lock2 NULL		error_check_good lockget:$nextobj [is_substr $lock2 $myenv] 1		error_check_good lockput:$lock2 [$lock2 put] 0	}}puts $reterror_check_good lock_id_free [$myenv lock_id_free $lockerid] 0error_check_good envclose [$myenv close] 0exit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -