| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 566 人关注过本帖
标题:问一下 这题什么意思,如何做
只看楼主 加入收藏
whczt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-30
收藏
 问题点数:0 回复次数:4 
问一下 这题什么意思,如何做
一个特权访问系统,要访问该系统需要向管理系统申请一个令牌,系统提供的令牌有限,所以用户使用完令牌后要把令牌归还。假设管理系统提供100张令牌,编号从1到100。请设计这个令牌管理系统的申请函数tokenGet和归还函数tokenBack。注意:
a.可能有多个用户在不同的时间申请令牌,且用户使用令牌的时间不定。
b.必须保证已被使用的令牌不被发给其他用户。
c.如果某个令牌已归还给管理系统,该令牌可以被再次使用
搜索更多相关主题的帖子: 管理系统 用户 特权 如何 
2007-08-30 17:37
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
线程同步问题



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-30 17:52
whczt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-30
收藏
得分:0 

能说的详细点吗?
没听明白什么意思。

2007-08-30 21:19
whczt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-30
收藏
得分:0 
要c 语言来实现
2007-08-30 21:20
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 

给你个思路作为参考.

设令牌计数器(作为全局变量),初始化为100
card_count = 100
系统中存在若干个线程(也就是题目指的用户)thread(1), thread(2) ... thread(n)
当thread(k), 其中1 <= k <= n, 被系统调度运行时,做以下操作:
1、测试card_count > 0, 若成立,转2,否则等待其>0为止
2、让thread(k)获得令牌,也就是修改card_count,使其card_count = card_count-1,由于card_count是临界资源需使用互斥访问或使用临界访问。
3、执行用户定义操作(模拟的话用个sleep就行了)
4、完成操作后,将卡片归还给系统,即card_count = card_count + 1,同样用互斥访问或临界访问。
5、结束线程thread(k)

其中第1、2步用到的API函数为CreateMutex(创建互斥量)或者InitializeCriticalSection、EnterCriticalSection、LeaveCriticalSection(分别为初始化临界区变量,进入临界区和离开临界区)
其中第4步使用API函数Sleep(ms),第5步用到ExitThread()函数
第2和4步分别对应题中的tokenGet和tokenBack,楼主可以将两个临界操作写成函数。

创建线程使用CreateThread函数,线程CallBack函数定义格式为DWORD WINAPI ThreadCallBack(LPVOID lpParameter)

以上所说的API函数在MSDN上都有参考和详细说明,请自行完成,推荐使用VC完成程序,所有API函数调用前请包含Windows.h库,只有自己动手才能学到东西。

[此贴子已经被作者于2007-8-31 9:41:27编辑过]


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-08-31 09:39
快速回复:问一下 这题什么意思,如何做
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034195 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved