当前位置: 首页>>代码示例>>C++>>正文


C++ mutex::run方法代码示例

本文整理汇总了C++中mutex::run方法的典型用法代码示例。如果您正苦于以下问题:C++ mutex::run方法的具体用法?C++ mutex::run怎么用?C++ mutex::run使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在mutex的用法示例。


在下文中一共展示了mutex::run方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: if

			Keyboard( double const xDebounceTicks = 18000000.0 )
				: mM( )
				, mQuit( )
				, mCallbacks( )
				, mInitialized( false )
				, mKeyboardListener( [ & ] ( int64_t const xSleepIntervalNs ) -> uint32_t
		  		{
			                bool pressedLastTime[ SDL_NUM_SCANCODES ];

					for ( uint16_t ii = 0; ii < SDL_NUM_SCANCODES; ++ii )
					{
						pressedLastTime [ ii ] = false;
					}

					double continueDebounceAccum = 0.0;

					Stopwatch t;

					while ( !mQuit.isSet( ) )
					{
						if ( xSleepIntervalNs > 0 )
						{
							sleep::ns( xSleepIntervalNs );
						}

						const Uint8 * state = SDL_GetKeyboardState( NULL );

		        	                for ( uint16_t ii = 0; ii < SDL_NUM_SCANCODES; ++ii )
	        	        	        {
							eKeyState keyState = eKeyState_None;

							auto runCallbacks = [&]()
							{
								mM.run([&]( )
								{
									for ( auto callback : mCallbacks )
									{
										callback( KeyboardEvent( keyState, ii, state ) );
									}
								});
							};

		        	                        if ( state[ ii ] && !pressedLastTime[ ii ] )
		                	                {
								keyState = eKeyState_Down;
								t.startMs( );
			                                }
							else if ( state[ ii ] && pressedLastTime[ ii ] )
							{
								continueDebounceAccum += t.stop( );

								if ( continueDebounceAccum > mDebounceTicks )
								{
									keyState = eKeyState_Continue;
									continueDebounceAccum = 0;
									t.startMs( );
								}
							}
		        	                        else if ( !state[ ii ] && pressedLastTime[ ii ] )
		                	                {
								keyState = eKeyState_Up;
			                                }

							if ( keyState != eKeyState_None )
							{
								runCallbacks( );
							}

			                                pressedLastTime[ ii ] = state[ ii ];
						}
					}
				})
				, mDebounceTicks( xDebounceTicks )
			{
				SISULOG( "In Keyboard Ctor" );
			}
开发者ID:,项目名称:,代码行数:76,代码来源:

示例2: registerCallback

			void registerCallback( OnKeyboardEventCallback xCallback )
			{
				mM.run([&]() { mCallbacks.push_back( xCallback ); });
			}
开发者ID:,项目名称:,代码行数:4,代码来源:


注:本文中的mutex::run方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。