试题
考点

专业课-操作系统-线程/进程-线程相关

面5笔5

Linux 平台,不提供任何相关库函数和工具包,只利用线程的随机调度特性和 sleep 函数的低精度特性,请编写一段程序实现:给一组字符,输出该组字符的一个随机化排列。

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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()


评论
暂无评论

加载更多