专业课-操作系统-线程/进程-线程相关
面5笔5Linux 平台,不提供任何相关库函数和工具包,只利用线程的随机调度特性和 sleep 函数的低精度特性,请编写一段程序实现:给一组字符,输出该组字符的一个随机化排列。
# coding=utf-8
import threading
import time
targetStr = 'abcdefg' # 不重复字符串
targetStrLength = len(targetStr)
resultStr = '' # 随机排序的字符串保存到这里
lock = threading.RLock()
class RandThread(threading.Thread):
def __init__(self, num):
threading.Thread.__init__(self)
self.num = num
def run(self):
time.sleep(0.5)
lock.acquire()
global targetStr
global resultStr
resultStr += targetStr[self.num]
lock.release()
def main():
threads = []
# 创建线程对象
for i in xrange(targetStrLength):
threads.append(RandThread(i))
# 启动线程
for t in threads:
t.start()
# 主线程等待子线程结束
for t in threads:
t.join()
print 'pre: ', targetStr
print 'random: ', resultStr
if __name__ == '__main__':
main()