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

📄 lockscript.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: lockscript.tcl,v 11.17 2002/02/20 17:08:23 sandstro Exp $## Random lock tester.# Usage: lockscript dir numiters numobjs sleepint degree readratio# dir: lock directory.# numiters: Total number of iterations.# numobjs: Number of objects on which to lock.# sleepint: Maximum sleep interval.# degree: Maximum number of locks to acquire at once# readratio: Percent of locks that should be reads.source ./include.tclsource $test_path/test.tclset usage "lockscript dir numiters numobjs sleepint degree readratio"# Verify usageif { $argc != 6 } {	puts stderr "FAIL:[timestamp] Usage: $usage"	exit}# Initialize argumentsset dir [lindex $argv 0]set numiters [ lindex $argv 1 ]set numobjs [ lindex $argv 2 ]set sleepint [ lindex $argv 3 ]set degree [ lindex $argv 4 ]set readratio [ lindex $argv 5 ]# Initialize random number generatorglobal rand_initberkdb srand $rand_initcatch { berkdb_env -create -lock -home $dir } eerror_check_good env_open [is_substr $e env] 1catch { $e lock_id } lockererror_check_good locker [is_valid_locker $locker] TRUEputs -nonewline "Beginning execution for $locker: $numiters $numobjs "puts "$sleepint $degree $readratio"flush stdoutfor { set iter 0 } { $iter < $numiters } { incr iter } {	set nlocks [berkdb random_int 1 $degree]	# We will always lock objects in ascending order to avoid	# deadlocks.	set lastobj 1	set locklist {}	set objlist {}	for { set lnum 0 } { $lnum < $nlocks } { incr lnum } {		# Pick lock parameters		set obj [berkdb random_int $lastobj $numobjs]		set lastobj [expr $obj + 1]		set x [berkdb random_int 1 100 ]		if { $x <= $readratio } {			set rw read		} else {			set rw write		}		puts "[timestamp -c] $locker $lnum: $rw $obj"		# Do get; add to list		catch {$e lock_get $rw $locker $obj} lockp		error_check_good lock_get [is_valid_lock $lockp $e] TRUE		# Create a file to flag that we've a lock of the given		# type, after making sure only other read locks exist		# (if we're read locking) or no other locks exist (if		# we're writing).		lock003_vrfy $rw $obj		lock003_create $rw $obj		lappend objlist [list $obj $rw]		lappend locklist $lockp		if {$lastobj > $numobjs} {			break		}	}	# Pick sleep interval	puts "[timestamp -c] $locker sleeping"	# We used to sleep 1 to $sleepint seconds.  This makes the test	# run for hours.  Instead, make it sleep for 10 to $sleepint * 100	# milliseconds, for a maximum sleep time of 0.5 s.	after [berkdb random_int 10 [expr $sleepint * 100]]	puts "[timestamp -c] $locker awake"	# Now release locks	puts "[timestamp -c] $locker released locks"	# Delete our locking flag files, then reverify.  (Note that the	# locking flag verification function assumes that our own lock	# is not currently flagged.)	foreach pair $objlist {		set obj [lindex $pair 0]		set rw [lindex $pair 1]		lock003_destroy $obj		lock003_vrfy $rw $obj	}	release_list $locklist	flush stdout}set ret [$e close]error_check_good env_close $ret 0puts "[timestamp -c] $locker Complete"flush stdoutexit

⌨️ 快捷键说明

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