HostGator Web Hosting

Linux内核同步方法 – lunar_ubuntu – 博客园

用户空间之所以需要同步,是因为用户程序会被调度程序调度抢占和重新调度。由于用户进程可能在任何时刻被抢占,而调度程序完全可能选择另一个高优先级的进程到处理器上运行,所以就似的一个程序正处于临界区时,被非自愿地抢占了,如果新调度的程序随后也进入了同一个临界区,前后两个进程就产生了竞争。 在linux内核中,会导致并发bug的原因不止是多个线程共同工作,包括: 中断——中断可能随时打断当前正在执行的代码 软中断和tasklet——内核可以在任何时刻唤醒或调度软中断和tasklet, 内核抢占 —— 内核中执行的任务也可能被另一个任务抢占 睡眠与用户空间同步 —— 在内核执行的进程可能会睡眠,导致唤醒调度程序。 对称多处理(Symmetrical Multi-Processing, SMP) —— 多个处理器可能同时执行一段代码 并发程序设计最大的难点在于如何识别出真正需要共享的数据和相应的临界区。 原子操作 内核提供了两组原子操作 —— 一组针对整数进行操作,另一组针对单独的位进行操作。 原子整数操作 针对整数的原子操作只能对atomic_t类型的数据进行处理。 typedef struct { volatile int counter; } atomic_t; volatile 关键字可以使得编译器不对相应的值进行访问优化,也就是每次读值时都从内存中读取最新值。 尽管Linux支持的所有机器上的整数类型都是32位,但是使用atomic_t的代码只能当作24位来使用,这是为了兼容SPARC体系结构。SPARC体系结构对原子操作缺乏指令级别的操作,所以只能在atomic_t的低八位加锁来支持原子操作。 原子类型常用操作: 原子操作通常是内联函数,往往是通过内联汇编指令来实现的。 在编写代码时,可以使用原子操作就尽量不要用复杂的加锁机制,系统开销更小。 64位原子操作 为了能够兼容32位系统,atmomic_t 类型即使在64位系统下也是32位的。如果想要使用64位的原子操作,可以使用atmoic64_t typedef struct { volatile long counter; } atomic64_t; 原子位操作 原子的位操作是直接对一个指针进行原子操作的,所以没有定义任何特殊的类型。 在所有原子位操作函数的名字前加上__ Read more…

Arabic Support for Ubuntu

تستطيع الان بأستخدام webilder هذا البرنامج البسيط الجميل ان تجعل صور موقع فليكر خلفيات لسطح مكتبك بطريقه اتوماتيكيه بواسطة البرنامج webilder تستطيع ان تختار صورك عن تطريق التاج , او اسم المستخدم , او الهوايات بطريقة سهله وبسيطه اعدادات هذا البرنامج سهله تستطيع تعديلها كما ترغب من وقت تغير الخلفيات Read more…

Klimkovice Ubuntu

Klimkovice Ubuntu Scribd will begin operating the SlideShare business on December 1, 2020 As of this date, Scribd will manage your SlideShare account and any content you may have on SlideShare, and Scribd’s General Terms of Use and Privacy Policy will apply. If you wish to opt out, please close Read more…

Ubuntu-Touch (Unity+Cinnamon)

Ubuntu-Touch (Unity+Cinnamon) – Gnome-look.org Please login.Login Please login.Login Please login or register to add a comment or rating.Login Ubuntu-Touch (Unity+Cinnamon) Source (link to git-repo or to original if based on someone elses unmodified work): Add the source-code for this project on opencode.net 2 Add Rating10 the best9 excellent8 great7 good6 Read more…

Ubuntu Dapper Repository

less than 1 minute read Hi, I’m pleased to announce that I’ve setted up an Ubuntu Dapper .deb Repository available at debuntu.org. The repository is hosted on http://repository.debuntu.org/. In order to easily download the available packages from debuntu.org, you might want to add the repository information into your /etc/apt/sources.list. Edit Read more…

国产化即时通信系统开发 — 使用Avalonia实现GGTalk的UI界面(Linux、Ubuntu、UOS、中标麒麟) – C#开源即时通讯GGTalk

距离2013年开源GGTalk以来,7年已经过去了,GGTalk现在有了完整的PC版、安卓版、iOS版,以及Xamarin版本。接下来GGTalk将推出国产化版本,以支持Linux/Ubuntu、中标麒麟、UOS等国产操作系统。我们选定了Avalonia框架作为GGTalk Linux版本的UI技术。 在考察了众多的Linux上的UI技术之后,我们选定了现在很主流的Avalonia框架作为GGTalk的客户端版本的UI技术。 距离2013年开源GGTalk以来,7年已经过去了,GGTalk现在有了完整的PC版、安卓版、iOS版(即将发布),以及Xamarin版本。 然而,时代一直在变化,在今天,有个趋势越来越明显,那就是政府系统将逐渐迁移到Linux以及国产化的操作系统和数据库上面来。 所以,GGTalk也将随顺这一必然的趋势,服务端将推出Linux(CentOS)版本,客户端也将支持Linux/Ubuntu、中标麒麟、UOS等国产操作系统。 基于.NET Core,服务端的迁移相对容易;而客户端的迁移则繁琐很多,其主要在于界面UI部分需要完全重写。 在考察了众多的Linux上的UI技术之后,我们选定了现在很主流的Avalonia框架作为GGTalk的客户端版本的UI技术。  在使用Avalonia开发GGTalk客户端linux版本的过程中,我们遇到了很多坑,也积累了很多经验,接下来我们将通过“Avalonia跨平台UI开发”这个系列,将这些过坑的经验分享出来,为后来者提供参考。 那下面先从Avalonia简介开始吧。 Avalonia是一个基于WPF XAML的跨平台UI框架,并支持多种操作系统:Windows(.NET Framework,.NET Core),Linux(GTK),MacOS,Android和iOS。 通过Avalonia,可以使用XAML标记来实现应用程序的外观,同时使用代码来实现其行为。 Avalonia官网:https://avaloniaui.net/ Avalonia开源地址:https://github.com/AvaloniaUI/Avalonia   VS 2019安装扩展 https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio 安装之后就有了Avalonia开发模板。   选择 Avalonia MVVM Application ,就可以创建一个项目。   2. GGTalk 登录界面示例 新建一个基础项目GGTalk,在MainWindow.xaml 添加图片、按钮、输入框等控件,就是WPF XAML 的语法,直接可以实现对应布局。    GGTalk 2020 注册登录 GGTalk 企业即时通讯系统 自动登录 记住密码 登录  如果熟悉WPF XAML,那么上面的代码理解起来就非常容易了。  我们在Ubuntu和中标麒麟上运行这个程序,效果如下所示(还不错吧): (在Ubuntu上运行的效果) (在中标麒麟上运行的效果) 在开发这个登录界面的时候,遇到了三个坑。 (1)当将输入框标签的height属性设置为小于或等于25时,在输入框的右边,会多出一个下拉框。 Read more…